生锈mod语句的不一致
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生锈mod语句的不一致相关的知识,希望对你有一定的参考价值。
按照以下链接将模块分成不同文件的示例:https://doc.rust-lang.org/book/ch07-02-modules-and-use-to-control-scope-and-privacy.html#separating-modules-into-different-files
我在src目录下创建了以下文件:
├── main.rs
├── sound
│ └── instrument.rs
└── sound.rs
在src/main.rs
:
mod sound;
fn main() {
// Absolute path
crate::sound::instrument::clarinet();
// Relative path
sound::instrument::clarinet();
}
在src/sound.rs
:
pub mod instrument;
在src/sound/instrument.rs
:
pub fn clarinet() {
println!("clarinet");
}
该示例按预期编译和工作。现在我的问题是:为什么在main.rs
,它可以从同一目录“修改”sound.rs
,而在sound.rs
,它必须从子目录“修改”instrument.rs
在标准的Rust bin项目中,src/main.rs
被赋予特殊位置作为crate root。 src/
中的其他源文件是包装箱顶层的模块。具有多个文件的模块可以采用两种形式之一。旧的方式是这样的:
├── main.rs
└── mod_name
└── mod.rs
└── submodule.rs
└── some_other_mod.rs
mod.rs
是必需的(具有确切的名称),并将作为模块的顶级。在这种情况下,你可以看到,我敢肯定,src/mod_name/mod.rs
直接引用some_other_mod
而不用super::
或crate::
作为前缀是没有意义的。
您正在使用的新方法允许您放弃mod.rs
并在父mod目录中使用mod_name.rs
,其目的与mod.rs
相同。当您开始将库作为单个文件开发时,这很方便,然后当您决定添加更多文件时,您不需要重命名和移动顶级文件。
在您的情况下,instrument.rs
需要位于sound/
目录中才能被视为sound
模块的一部分。如果您将它直接放在src/
中,它将被视为包装箱中的顶级模块。
以上是关于生锈mod语句的不一致的主要内容,如果未能解决你的问题,请参考以下文章
Mybatis ,实体类里面的变量名称和表里面字段写的不一致,一个是表里是下划线,实体类是大写
Mybatis ,实体类里面的变量名称和表里面字段写的不一致,一个是表里是下划线,实体类是大写
解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段