我正在尝试将一个文件中的函数与多个其他文件一起使用。
当我尝试将“mod somefile”添加到文件中时,Rust 编译器希望它们嵌套在子文件夹中,这不是我想要构建项目的方式,因为这意味着每次都会复制文件。
// src/main.rs
mod aaa;
mod bbb;
fn main() {
aaa::do_something();
bbb::do_something_else();
}
// src/aaa.rs
mod zzz; // rust compiler wants the file to be nested in a subfolder as aaa/zzz.rs
pub fn do_something() {
zzz::do_stuff();
}
// src/bbb.rs
mod zzz; // again, compiler wants the file nested in a subfolder as bbb/zzz.rs
pub fn do_something_else() {
zzz::do_stuff();
}
// src/zzz.rs
pub fn do_stuff() {
// does stuff here
}
我希望能够将 src/zzz.rs
保留在根 src
文件夹中,并在项目中的任何其他文件中使用其功能,而不是必须在每个文件的子文件夹中复制它(例如:src/aaa/zzz.rs
、src/bbb/zzz.rs
)。
最佳答案
您只需在 main.rs
中使用 mod zzz;
一次。
在aaa.rs
和bbb.rs
中,您需要一个use crate::zzz;
,而不是mod zzz;
。
一个例子:
文件src/aaa.rs
:
use crate::zzz; // `crate::` is required since 2018 edition
pub fn do_something() {
zzz::do_stuff();
}
文件src/bbb.rs
:
use crate::zzz;
pub fn do_something_else() {
zzz::do_stuff();
}
文件src/main.rs
:
// src/main.rs
mod aaa;
mod bbb;
mod zzz;
fn main() {
aaa::do_something();
bbb::do_something_else();
}
文件src/zzz.rs
:
pub fn do_stuff() {
println!("does stuff zzz");
}
仅当您有一个名为 aaa
的目录并且其中包含文件mod.rs
和zzz.rs
。然后,您必须将 mod zzz;
放入 mod.rs
中,以使子模块 aaa::zzz
对程序的其余部分可见。
关于rust - 如何在多个文件中使用一个文件中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54260772/