首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用本地未发布的板条箱?

如何使用本地未发布的板条箱?
EN

Stack Overflow用户
提问于 2015-10-09 05:01:22
回答 2查看 42.2K关注 0票数 149

我做了一个库:

代码语言:javascript
复制
cargo new my_lib

我想在一个不同的程序中使用这个库:

代码语言:javascript
复制
cargo new my_program --bin
代码语言:javascript
复制
extern crate my_lib;

fn main {
    println!("Hello, World!");
}

我需要做些什么才能让它正常工作?

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

代码语言:javascript
复制
.
├── my_lib
└── my_program

希望这是有意义的。

我认为我能够按照Cargo guide重写路径,但它声明

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

这是在使用Rust (1.3)的最新稳定版本时。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-09 05:08:07

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

代码语言:javascript
复制
[dependencies.my_lib]
path = "../my_lib"

或等效的备用TOML:

代码语言:javascript
复制
[dependencies]
my_lib = { path = "../my_lib" }

有关更多细节,请查看Cargo docs for specifying dependencies,比如如何使用git存储库而不是本地路径。

票数 203
EN

Stack Overflow用户

发布于 2019-06-06 03:23:28

我在找一个与mvn install等同的软件。虽然这个问题并不完全是我最初的问题的副本,但任何偶然发现我的原始问题并点击此处链接的人都会找到一个更完整的答案。

答案是“没有mvn install的等价物,因为您必须在Cargo.toml文件中硬编码路径,这在其他人的计算机上可能是错误的,但您可以非常接近。”

现有的答案有点简短,我不得不花更长的时间才能真正让事情正常工作,所以这里有更多的细节:

代码语言:javascript
复制
/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给我带来了以下好处:

代码语言:javascript
复制
/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

代码语言:javascript
复制
pub fn svg_header(w: i32, h: i32) -> String

现在它起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33025887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档