我做了一个库:
cargo new my_lib
我想在一个不同的程序中使用这个库:
cargo new my_program --bin
extern crate my_lib;
fn main {
println!("Hello, World!");
}
我需要做些什么才能让它正常工作?
它们不在同一个项目文件夹中。
.
├── my_lib
└── my_program
希望这是有意义的。
我认为我能够按照Cargo guide重写路径,但它声明
您不能使用此功能告诉Cargo如何查找本地未发布的板条箱。
这是在使用Rust (1.3)的最新稳定版本时。
发布于 2015-10-09 05:08:07
将依赖项部分添加到可执行文件的Cargo.toml中,并指定路径:
[dependencies.my_lib]
path = "../my_lib"
或等效的备用TOML:
[dependencies]
my_lib = { path = "../my_lib" }
有关更多细节,请查看Cargo docs for specifying dependencies,比如如何使用git存储库而不是本地路径。
发布于 2019-06-06 03:23:28
我在找一个与mvn install
等同的软件。虽然这个问题并不完全是我最初的问题的副本,但任何偶然发现我的原始问题并点击此处链接的人都会找到一个更完整的答案。
答案是“没有mvn install
的等价物,因为您必须在Cargo.toml文件中硬编码路径,这在其他人的计算机上可能是错误的,但您可以非常接近。”
现有的答案有点简短,我不得不花更长的时间才能真正让事情正常工作,所以这里有更多的细节:
/usr/bin/cargo run --color=always --package re5 --bin re5
Compiling re5 v0.1.0 (file:///home/thoth/art/2019/radial-embroidery/re5)
error[E0432]: unresolved import `embroidery_stitcher`
--> re5/src/main.rs:5:5
|
5 | use embroidery_stitcher;
| ^^^^^^^^^^^^^^^^^^^ no `embroidery_stitcher` in the root
rustc --explain E0432
包含的这段话呼应了谢普马斯特的回答:
或者,如果您尝试使用来自外部机箱的模块,则可能遗漏了extern crate
声明(通常放在机箱根目录中):
外部板条箱核心;//使用core
板条箱需要use core::any;
从use
切换到extern crate
给我带来了以下好处:
/usr/bin/cargo run --color=always --package re5 --bin re5
Compiling embroidery_stitcher v0.1.0 (file:///home/thoth/art/2019/radial-embroidery/embroidery_stitcher)
warning: function is never used: `svg_header`
--> embroidery_stitcher/src/lib.rs:2:1
|
2 | fn svg_header(w: i32, h: i32) -> String
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: #[warn(dead_code)] on by default
Compiling re5 v0.1.0 (file:///home/thoth/art/2019/radial-embroidery/re5)
error[E0603]: function `svg_header` is private
--> re5/src/main.rs:8:19
|
8 | let mut svg = embroidery_stitcher::svg_header(100,100);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我不得不在那个函数的前面贴上一个pub
pub fn svg_header(w: i32, h: i32) -> String
现在它起作用了。
https://stackoverflow.com/questions/33025887
复制相似问题