我尝试在Rust中创建一个模块,然后从另一个文件中使用它。这是我的文件结构:
matthias@X1:~/projects/bitter-oyster$ tree
.
├── Cargo.lock
├── Cargo.toml
├── Readme.md
├── src
│ ├── liblib.rlib
│ ├── lib.rs
│ ├── main.rs
│ ├── main.rs~
│ └── plot
│ ├── line.rs
│ └── mod.rs
└── target
└── debug
├── bitter_oyster.d
├── build
├── deps
├── examples
├── libbitter_oyster.rlib
└── native
8 directories, 11 files
这是货物。
[package]
name = "bitter-oyster"
version = "0.1.0"
authors = ["matthias"]
[dependencies]
这里是www.example.commain.rs:
extern crate plot;
fn main() {
println!("----");
plot::line::test();
}
这里是www.example.comlib.rs:
mod plot;
这是情节/www.示例. commod.rs
mod line;
这里是plot/网站line.rs
pub fn test(){
println!("Here line");
}
当我尝试使用以下代码编译程序时:cargo run
我得到:
Compiling bitter-oyster v0.1.0 (file:///home/matthias/projects/bitter-oyster)
/home/matthias/projects/bitter-oyster/src/main.rs:1:1: 1:19 error: can't find crate for `plot` [E0463]
/home/matthias/projects/bitter-oyster/src/main.rs:1 extern crate plot;
我如何编译我的程序?据我所知,从在线文档这应该工作,但它没有。
5条答案
按热度按时间7lrncoxx1#
为了补充上述问题,当您试图在另一个项目中引用编译为
cdylib
(docs)的库时,它可能会生成此错误。我通过分离希望在常规lib
项目中重用的代码来解决此问题。2q5ifsrm2#
如果您看到此错误:
可能是您没有将所需的crate添加到
Cargo.toml
中的依赖项列表:nfs0ujit3#
您有以下问题:
1.你必须在
main.rs
中使用extern crate bitter_oyster;
,因为生成的二进制文件使用你的crate,二进制文件不是它的一部分。1.另外,在
main.rs
中调用bitter_oyster::plot::line::test();
,而不是plot::line::test();
。plot
是bitter_oyster
机箱中的模块,例如line
。您将使用test
函数的完全限定名来引用该函数。1.请确保每个模块都以完全限定名导出。您可以使用
pub
关键字将模块设置为public,例如pub mod plot;
您可以在这里找到有关Rust模块系统的更多信息:https://doc.rust-lang.org/book/crates-and-modules.html
模块结构的工作副本如下所示:
源代码/www.example.commain.rs:
源代码/www.example.comlib.rs:
来源/绘图/www.example.commod.rs:
来源/绘图/www.example.com:line.rs :
cld4siwp4#
当我在[dev-dependencies]而不是[dependencies]中导入我的板条箱时,我遇到了这个问题
jhkqcmku5#
当您没有为特定的板条箱启用某些“功能标志”时,也会发生这种情况。不幸的是,这些功能标志有时可能没有文档记录。当需要功能标志时,它们会显示相同的错误(“找不到板条箱”)
我使用的是
diesel
,并尝试使用BigInteger
:错了
正确: