如何在Rust货运项目中使用另一个模块中的一个模块?

问题描述 投票:7回答:2

有很多关于使用模块的Rust documentation,但我还没有找到一个具有多个模块的Cargo二进制文件的示例,其中一个模块使用另一个模块。我的例子在src文件夹中有三个文件。模块a和b处于同一级别。一个不是另一个的子模块。

卖弄.人生:

mod a;

fn main() {
    println!("Hello, world!");
    a::a();
}

啊.人生:

pub fn a() {
    println!("A");
    b::b();
}

和b.rs:

pub fn b() {
    println!("B");
}

我在a.rs中尝试过use bmod b的变体,但我无法编译这段代码。例如,如果我尝试使用use b,则会收到以下错误:

 --> src/a.rs:1:5
  |
1 | use b;
  |     ^ no `b` in the root. Did you mean to use `a`?

让Rust认识到我想在货物应用程序中使用模块a中的模块b的正确方法是什么?

module rust
2个回答
13
投票

你必须在某处包括b.rs,通常使用mod b;。如果ba的孩子(而不是a的兄弟姐妹),有两种方法可以做到这一点:

  • 推荐:将a.rs重命名为a/mod.rs,将b.rs重命名为a/b.rs。然后你可以在mod b; a/mod.rs
  • 相反,你可以只在#[path = "b.rs"] mod b; a.rs而无需重命名来源。

如果b打算成为a的兄弟姐妹(而不是a的孩子),你可以在mod b;中选择main.rs,然后在use crate::b;获得a.rs


6
投票

对于Rust版本1.33兄弟方法从接受的答案不适合我。

相反,我使用兄弟mod作为这个:

use crate::b;

编辑:拼写错误的单词箱

© www.soinside.com 2019 - 2024. All rights reserved.