Rust 无法声明模块";无法在此位置声明新模块";
我有3个文件:lib.rs、file2.rs和file3.rs。I lib.rs我有这个:Rust 无法声明模块";无法在此位置声明新模块";,rust,Rust,我有3个文件:lib.rs、file2.rs和file3.rs。I lib.rs我有这个: mod file2; use file2::Struct2; 而且效果很好。但是,在文件3中执行相同的操作会编译一个错误: mod file2; use file2::Struct2; => error: cannot declare a new module at this location 如果我删除modfile2声明,我会得到: error: unresolved import `St
mod file2;
use file2::Struct2;
而且效果很好。但是,在文件3中执行相同的操作会编译一个错误:
mod file2;
use file2::Struct2;
=> error: cannot declare a new module at this location
如果我删除modfile2
声明,我会得到:
error: unresolved import `Struct2`
这有什么问题吗?我不知道为什么会出现这样的错误,但这并不是你想要的。模块形成一个树结构,您可以使用mod声明来形成它们。因此,您正在尝试在file3模块内创建另一个file2模块 我猜您希望file2和file3都位于主模块之下,而不是彼此的子模块之下。要做到这一点,请将
mod file2;
mod file3;
在lib.rs中,然后在file3.rs中
use file2::Struct2;
这一切都应该奏效。我在移动电话上,所以我无法对自己进行三重检查,很抱歉格式化。不,这只是树的根。也被称为“板条箱根”。请参阅本书的“板条箱和模块”章节进行详细说明。这并不特别,因为它是mod唯一可以去的地方。他们可以进入这些文件中的任何一个。@imatahi,请阅读官方书籍中的,它应该会给你一些答案
mod
声明可以出现在任何模块中;它们只需正确使用即可。@ker,因此,由于创建定义在另一个文件中的模块的mod声明只能在lib.rs中创建,因此我们可以从这个意义上说“lib.rs是一个特殊文件”,不是吗?正如实际的错误消息所说,这也不是真的“可以通过foo/mod.rs
”将此模块foo
移动到自己的目录中。该模块的定义也在另一个文件中。