我正在尝试将一个文件中的函数与多个其他文件一起使用。
当我尝试将“mod somefile”添加到文件中时,Rust 编译器希望将它们嵌套在子文件夹中,这不是我想要构建项目的方式,因为这意味着每次都会复制文件。
// src/main.rs
mod aaa;
mod bbb;
fn main() {
aaa::do_something();
bbb::do_something_else();
}
Run Code Online (Sandbox Code Playgroud)
// 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();
}
Run Code Online (Sandbox Code Playgroud)
// 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();
}
Run Code Online (Sandbox Code Playgroud)
// src/zzz.rs
pub fn do_stuff() {
// does stuff here
}
Run Code Online (Sandbox Code Playgroud)
我希望能够保留src/zzz.rs根src文件夹并在项目中的任何其他文件中使用其功能,而不必在每个文件的子文件夹中复制它(例如:src/aaa/zzz.rs、src/bbb/zzz.rs)。
您只需要mod zzz;进入一次main.rs。
而你需要的是一个aaa.rs,而不是一个。bbb.rsuse crate::zzz;mod zzz;
一个例子:
文件src/aaa.rs:
use crate::zzz; // `crate::` is required since 2018 edition
pub fn do_something() {
zzz::do_stuff();
}
Run Code Online (Sandbox Code Playgroud)
文件src/bbb.rs:
use crate::zzz;
pub fn do_something_else() {
zzz::do_stuff();
}
Run Code Online (Sandbox Code Playgroud)
文件src/main.rs:
// src/main.rs
mod aaa;
mod bbb;
mod zzz;
fn main() {
aaa::do_something();
bbb::do_something_else();
}
Run Code Online (Sandbox Code Playgroud)
文件src/zzz.rs:
pub fn do_stuff() {
println!("does stuff zzz");
}
Run Code Online (Sandbox Code Playgroud)
仅当您有一个名为mod zzz;的aaa目录aaa并且其中包含文件mod.rs和zzz.rs. 然后您必须将其放入mod zzz;以mod.rs使子模块aaa::zzz对程序的其余部分可见。
| 归档时间: |
|
| 查看次数: |
2164 次 |
| 最近记录: |