Rust库开发流程

7
在使用Rust(+ Cargo)开发库时,如何实现快速的重新编译/测试循环?
当开发应用程序时,这很容易,我:
- 在代码中进行更改 - 切换到终端并运行“cargo run” - 查看编译器反馈
但现在我想将我的应用程序的部分提取为库并将其发布到GitHub上。我想继续开发我的应用程序,但现在它依赖于这个库。我将同时开发库和应用程序。
我该如何获得同样快速的反馈?
这个库和应用程序都将在同一台机器上开发,我想对库进行更改,相应地更新应用程序并查看编译器反馈。
我猜我可以在Cargo.toml中使用我的库作为依赖项,并每次想要更新应用程序的依赖项时运行“cargo update”,但这会有些慢,因为它必须每次从github下载代码并重新编译所有依赖项。
1个回答

10
你可以使用 Cargo 的这个略微未记录的功能。将以下行添加到`~/.cargo/config`文件中(或将其添加到`/path/to/your/binary/project/.cargo/config`以将效果限制为二进制项目):
paths = ["/path/to/your/library"]
从现在开始,每个依赖于你的库的货物包(或那些在/path/to/your/binary/project根目录下的货物包)将使用/path/to/your/library作为其源代码,而不管此包清单中指定的内容如何,因此你可以在程序清单中保留Git仓库URL。希望这个特性在未来会被记录在文档中。 更新

现在已经在Cargo指南中记录了此内容。


我有一种感觉,你也可以将它添加到单个项目中(使用.cargo/config而不是在~中,紧挨着Cargo.toml),但我可能记错了。 - huon
@dbaupp,你可能是正确的(https://github.com/rust-lang/cargo/blob/a5a97297f515ba93192ba39d79b224d3868991c1/src/cargo/util/config.rs#L256),谢谢! - Vladimir Matveev
很奇怪,但对我来说不起作用。当我执行 cargo update <lib_name> 命令时,Cargo 仍然连接到 GitHub。 - Valentin V
@ValentinVasilyev,cargo update 始终会更新远程仓库,但是在通过 cargo build 进行构建过程中将使用本地路径。 - Vladimir Matveev
@ValentinVasilyev,这实际上已经有文档记录了,不确定有多久了。 - Vladimir Matveev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接