我不理解mod
或use
;我想mod
会将文件导入项目,而use
将使用它们。
我有一个具有以下层次结构的项目:
.
|-- Cargo.lock
|-- Cargo.toml
|-- src
| |-- display.rs
| |-- list.rs
| |-- main.rs
| |-- parser.rs
| |-- sort.rs
为什么在 list.rs 中需要use
而不在 main.rs 中需要sorting()
?我在 list.rs 中使用功能print_files()
和parse()
在 main.rs <中使用功能listing()
和mod parser; // Ok
mod list; // Ok
mod sort; // Ok
mod display; // Ok
// use parser;// The name `parser` is defined multiple times
fn main() {
parser::parse();
list::listing();
}
/ em>。
main.rs
//mod sort; // file not found in module `sort`
//mod display; // file not found in module `display`
use sort; // Ok
use display; // Ok
pub fn listing() {
parcours_elements();
sort::sorting();
display::print_files();
}
fn parcours_elements() {
}
list.rs
pub fn sorting() {
}
sort.rs
pub fn print_files() {
}
display.rs
{{1}}
答案 0 :(得分:2)
首先,请重新阅读mod
and the Filesystem。然后再次阅读。无论出于何种原因,许多人都无法使用模块系统。 The Rust Programming Language中包含大量的良好信息。
我想
mod
会将文件导入项目,而use
将使用它们。
mod foo
相对于当前模块将某些代码“附加”到板条箱层次结构。
use bar
避免了键入板条箱层次结构中某些内容的完整路径。路径bar
从板条箱的根开始 。
在 main.rs 中有mod parser
时,您的意思是
找到文件 parser.rs 1 并将所有代码放在相对于板条根 2 的层次结构中。
当您尝试在 main.rs 中添加use parser
时,是在说
转到层次结构的根,找到模块
parser
,并在此处(板条箱根)以名称parser
可用。
这已经存在(因为定义模块的地方就在这里!),所以会出现错误。
当您有use sort
是 list.rs 时,您是在说
转到层次结构的根,找到模块
sort
,并在此处(模块list
内部)以名称sort
可用。
这很好。
1 或 parser / mod.rs 。
2 因为 main.rs (或 lib.rs )是板条箱根。
另请参阅: