铁 rust 找不到板条箱

bq9c1y66  于 2023-02-04  发布在  其他
关注(0)|答案(5)|浏览(172)

我尝试在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;

我如何编译我的程序?据我所知,从在线文档这应该工作,但它没有。

7lrncoxx

7lrncoxx1#

为了补充上述问题,当您试图在另一个项目中引用编译为cdylibdocs)的库时,它可能会生成此错误。我通过分离希望在常规lib项目中重用的代码来解决此问题。

2q5ifsrm

2q5ifsrm2#

如果您看到此错误:

error[E0463]: can't find crate for `PACKAGE`
  |
1 | extern crate PACKAGE;
  | ^^^^^^^^^^^^^^^^^^^^^ can't find crate

可能是您没有将所需的crate添加到Cargo.toml中的依赖项列表:

[dependencies]
PACKAGE = "1.2.3"
nfs0ujit

nfs0ujit3#

您有以下问题:
1.你必须在main.rs中使用extern crate bitter_oyster;,因为生成的二进制文件使用你的crate,二进制文件不是它的一部分。
1.另外,在main.rs中调用bitter_oyster::plot::line::test();,而不是plot::line::test();plotbitter_oyster机箱中的模块,例如line。您将使用test函数的完全限定名来引用该函数。
1.请确保每个模块都以完全限定名导出。您可以使用pub关键字将模块设置为public,例如pub mod plot;
您可以在这里找到有关Rust模块系统的更多信息:https://doc.rust-lang.org/book/crates-and-modules.html
模块结构的工作副本如下所示:
源代码/www.example.commain.rs:

extern crate bitter_oyster;

fn main() {
    println!("----");
    bitter_oyster::plot::line::test();
}

源代码/www.example.comlib.rs:

pub mod plot;

来源/绘图/www.example.commod.rs:

pub mod line;

来源/绘图/www.example.com:line.rs :

pub fn test(){
    println!("Here line");
}
cld4siwp

cld4siwp4#

当我在[dev-dependencies]而不是[dependencies]中导入我的板条箱时,我遇到了这个问题

jhkqcmku

jhkqcmku5#

当您没有为特定的板条箱启用某些“功能标志”时,也会发生这种情况。不幸的是,这些功能标志有时可能没有文档记录。当需要功能标志时,它们会显示相同的错误(“找不到板条箱”)
我使用的是diesel,并尝试使用BigInteger

错了

diesel = { version = "2.0.3", features = ["postgres", "chrono", "r2d2", "serde_json", "biginteger"] }

正确:

diesel = { version = "2.0.3", features = ["postgres", "chrono", "r2d2", "serde_json", "numeric"] }

相关问题