有很多关于使用模块的Rust 文档,但我还没有找到一个包含多个模块的Cargo二进制文件的示例,其中一个模块使用另一个模块.我的例子在src文件夹中有三个文件.模块a和b处于同一级别.一个不是另一个的子模块.
main.rs:
mod a;
fn main() {
println!("Hello, world!");
a::a();
}
Run Code Online (Sandbox Code Playgroud)
a.rs:
pub fn a() {
println!("A");
b::b();
}
Run Code Online (Sandbox Code Playgroud)
和b.rs:
pub fn b() {
println!("B");
}
Run Code Online (Sandbox Code Playgroud)
我试过的变化use b和mod b内部a.rs,但我不能得到这个代码进行编译.use b例如,如果我尝试使用,则会收到以下错误:
--> src/a.rs:1:5
|
1 | use b;
| ^ no `b` in the root. Did you mean to use `a`?
Run Code Online (Sandbox Code Playgroud)
让Rust认识到我想在货物应用程序中使用模块a中的模块b的正确方法是什么?
Mas*_*ara 16
你必须包括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;
Run Code Online (Sandbox Code Playgroud)
编辑:拼写错误的词条箱
| 归档时间: |
|
| 查看次数: |
3443 次 |
| 最近记录: |