我试图在Rust中创建一个模块,然后从另一个文件中使用它.这是我的文件 struct :

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 .汤姆:

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

[dependencies]

这是主要的.rs:

extern crate plot;

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

这是lib.rs:

mod plot;

这是plot/mod.rs

mod line;

这是曲线图.rs

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

当我try 使用: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. 你必须在main.rs中使用extern crate bitter_oyster;,因为生产的二进制文件uses是你的 crate ,二进制文件不是它的一部分.

  2. 另外,拨打main.rs中的bitter_oyster::plot::line::test();而不是plot::line::test();.plotbitter_oyster crate 中的一个模块,例如line.您指的是具有完全限定名的test函数.

  3. 确保每个模块都以完全限定的名称导出.你可以用pub关键字公开一个模块,比如pub mod plot;

你可以在这里找到更多关于Rust模块系统的信息:https://doc.rust-lang.org/book/crates-and-modules.html

模块 struct 的工作副本如下所示:

src/main.rs:

extern crate bitter_oyster;

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

src/lib.rs:

pub mod plot;

src/plot/mod.rs:

pub mod line;

src/plot/line.rs:

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

Rust相关问答推荐

borrow 和内部IntoIterator

如何将`Join_all``Vec<;Result<;Vec<;Foo&>;,Anywhere::Error&>;`合并到`Result<;Vec<;Foo&>;,Anywhere::Error&>;`

在决定使用std::Sync::Mutex还是使用Tokio::Sync::Mutex时,操作系统线程调度是考虑因素吗?

创建Rust中元对象协议的动态对象 Select /重新分配机制

为什么基于高山Linux的Docker镜像不能在绝对路径下找到要执行的命令?

在Rust中判断编译时是否无法访问

如何go 除多余的(0..)在迭代中,当它不被使用时?

铁 rust 中双倍或更多换行符的更好练习?

如何修复&q;无法返回引用函数参数的值在异步规则中返回引用当前函数&q;拥有的数据的值?

什么是`&;[][..]`铁 rust 里的刻薄?

为什么我需要 to_string 函数的参考?

借来的价值生命周期 不够长,不确定为什么它仍然是借来的

一次不能多次borrow *obj作为可变对象

需要一个有序向量来进行 struct 初始化

存储返回 impl Trait 作为特征对象的函数

trait 对象指针的生命周期

在 Rust 中返回对枚举变体的引用是个好主意吗?

提取 struct 生成宏中字段出现的索引

覆盖类型的要求到底是什么?为什么单个元素元组满足它?

为什么 u64::trailing_zeros() 在无分支工作时生成分支程序集?