如何使用本地未发布的箱子?

And*_* S. 77 multifile rust rust-crates

我做了一个图书馆:

cargo new my_lib
Run Code Online (Sandbox Code Playgroud)

我想在另一个程序中使用该库:

cargo new my_program --bin
Run Code Online (Sandbox Code Playgroud)
extern crate my_lib;

fn main {
    println!("Hello, World!");
}
Run Code Online (Sandbox Code Playgroud)

我需要做些什么才能让它发挥作用?

它们不在同一个项目文件夹中.

.
??? my_lib
??? my_program
Run Code Online (Sandbox Code Playgroud)

希望这是有道理的.

我认为我可以按照货物指南覆盖路径,但它说明了

您无法使用此功能告诉Cargo如何查找本地未发布的板条箱.

这是使用最新稳定版本的Rust(1.3).

She*_*ter 103

将依赖项部分添加到可执行文件的Cargo.toml并指定路径:

[dependencies.my_lib]
path = "../my_lib"
Run Code Online (Sandbox Code Playgroud)

或等效的替代TOML:

[dependencies]
my_lib = { path = "../my_lib" }
Run Code Online (Sandbox Code Playgroud)

查看Cargo文档以指定依赖关系以获取更多详细信息,例如如何使用git存储库而不是本地路径.

  • 有没有办法自己使用本地包(用于开发),同时让Cargo.toml引用crates.io,以便其他人也可以构建我的代码? (7认同)
  • @DavidRoundy如果你还在寻找答案,现在可以做你想要的了.您可以为依赖项指定`version`和`path`,并在发布时删除`path`部分:) (7认同)
  • 是否可以做同样的事情,但使用“git”而不是“version”?像这样 `my_lib = { path = "...", git = "..." }` 这样我就可以在开发过程中使用本地副本,并在有人克隆存储库并尝试编译程序时使用远程 git? (2认同)