当前位置:  开发笔记 > 编程语言 > 正文

Rust无法找到箱子

如何解决《Rust无法找到箱子》经验,为你挑选了3个好方法。

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

这是Cargo.toml:

[package]
name = "bitter-oyster"
version = "0.1.0"
authors = ["matthias"]

[dependencies]

这是主要的:

extern crate plot;

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

这是lib.rs:

mod plot;

这是情节/模型

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;

我如何编译我的程序?据我可以从在线文档中看出这应该有效,但事实并非如此.



1> Tibor Benke..:

您有以下问题:

    你必须使用extern crate bitter_oyster;in main.rs,因为生成的二进制文件使用你的crate,二进制文件不是它的一部分.

    此外,呼叫bitter_oyster::plot::line::test();main.rs代替plot::line::test();.plotbitter_oyster箱子里的一个模块,比如line.您指的是test具有完全限定名称的函数.

    确保每个模块都以完全限定名称导出.您可以使用pub关键字公开模块,例如pub mod plot;

您可以在此处找到有关Rust模块系统的更多信息:https://doc.rust-lang.org/book/crates-and-modules.html

模块结构的工作副本如下:

SRC/main.rs:

extern crate bitter_oyster;

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

SRC/lib.rs:

pub mod plot;

SRC /剧情/ mod.rs:

pub mod line;

src/plot/line.rs:

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



2> Andy Hayden..:

如果您看到此错误:

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

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

[dependencies]
PACKAGE = "1.2.3"

请参阅在Cargo文档中指定依赖项.



3> Sebastiaan..:

要添加到给定的答案,编译为cdylib(docs)的库可以在您尝试在另一个项目中引用它时生成此错误.我通过分离我希望在常规lib项目中重用的代码来解决它.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有