如何在Cargo中将本地未发布包添加到本地注册表实现跨工作区复用?
解决方案:本地复用Rust私有库的简便方法
方法1:手动搭建本地注册表
虽然官方文档侧重镜像用途,但cargo local-registry完全可以用来托管私有库:
- 创建本地注册表目录并初始化索引,比如
~/rust-local-registry:cargo local-registry init ~/rust-local-registry - 在目标库的根目录打包并上传到本地注册表:
cargo package --no-verify cargo local-registry publish --registry ~/rust-local-registry - 在需要依赖的项目中,修改
Cargo.toml添加注册表配置:
也可以把注册表配置写到全局[registries] my_local = { index = "file:///home/你的用户名/rust-local-registry/index" } [dependencies] 你的库名 = { version = "0.1.0", registry = "my_local" }~/.cargo/config.toml中,避免每个项目重复配置。
方法2:使用cargo symlink第三方工具
类似npm的npm link,通过全局符号链接直接关联本地库:
- 安装工具:
cargo install cargo-symlink - 在你的库根目录执行链接命令:
cargo symlink - 在目标项目的
Cargo.toml中直接添加依赖,无需指定路径:
库代码更新后,目标项目编译时会自动同步最新内容。[dependencies] 你的库名 = "0.1.0"
方法3:全局配置路径映射
在~/.cargo/config.toml中配置本地库的目录映射,不用每个项目写冗长路径:
[source.my_local] directory = "~/rust-library-crates"
然后在项目的Cargo.toml中指定使用这个源:
[dependencies] 你的库名 = { version = "0.1.0", source = "my_local" }
这种方式无需打包,直接引用本地目录的crates,适合频繁修改库代码的场景。
内容的提问来源于stack exchange,提问作者krenix
相关产品推荐
相关产品推荐

