无法声明模块"无法在此位置声明新模块"

ima*_*ahi 4 rust

我有3个文件:lib.rs,file2.rs和file3.rs.我lib.rs我有这个:

mod file2;
use file2::Struct2;
Run Code Online (Sandbox Code Playgroud)

它运作良好.但是,在file3中执行相同的操作会编译并出现错误:

mod file2;
use file2::Struct2;

=> error: cannot declare a new module at this location
Run Code Online (Sandbox Code Playgroud)

如果我删除mod file2声明我得到这个:

error: unresolved import `Struct2`
Run Code Online (Sandbox Code Playgroud)

这有什么问题?

Ste*_*nik 7

我不确定你为什么会完全得到这个错误,但这不会做你想要的.模块形成树结构,您使用mod声明来形成它们.所以你试图在file3中创建另一个file2 mod.

我猜你想要file2和file3都在主模块下,而不是彼此的子模块.要做到这一点,放

mod file2;
mod file3;
Run Code Online (Sandbox Code Playgroud)

在lib.rs中,然后在file3.rs中

use file2::Struct2;
Run Code Online (Sandbox Code Playgroud)

它应该都有效.我在移动设备上,所以我不能对自己进行三重检查,抱歉格式化.

  • @ker,所以因为**mod声明创建模块,其定义在另一个文件中,只能在lib.rs中创建**我们可以说"lib.rs是一个特殊的文件",在这个意义上,不是吗? (2认同)
  • 这也不是真的,因为实际的错误消息说"可能通过`foo/mod.rs`将这个模块`foo`移动到它自己的目录".这也是一个模块,其定义在另一个文件中. (2认同)