有很多关于使用模块的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 b
和mod 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的正确方法是什么?
你必须在某处包括b.rs
,通常使用mod b;
。如果b
是a
的孩子(而不是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
。
对于Rust版本1.33兄弟方法从接受的答案不适合我。
相反,我使用兄弟mod作为这个:
use crate::b;
编辑:拼写错误的单词箱