有很多关于使用模块的Rust文档,但是我还没有找到一个包含多个模块的Cargo二进制示例,其中一个模块使用另一个模块。我的示例在src文件夹中有三个文件。模块a和b处于同一级别。一个不是另一个的子模块。
main.rs:
mod a;
fn main() {
println!("Hello, world!");
a::a();
}
a.rs:
pub fn a() {
println!("A");
b::b();
}
和b.rs:
pub fn b() {
println!("B");
}
我已经尝试过a.rsuse 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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句