同一项目中的两个 crate 可以有同名的模块吗?

ary*_*ing 1 rust rust-crates

我试图为不同的板条箱创建两个具有相同名称的模块,令我惊讶的是,在声明第二个模块时,它指向第一个模块的代码。这是否意味着模块定义除了在包内声明的位置之外还与文件层次结构耦合?

/src/bin/main_one.rs // contains declaration `mod foo;`
/src/bin/main_two.rs // contains declaration `mod foo;`

/src/bin/foo.rs // Thre can only ever be one foo.rs here
Run Code Online (Sandbox Code Playgroud)

这里唯一的解决方案是使用不同名称的模块吗?

src/bin/foo-for-one.rs // module used by one.rs
src/bin/foo-for-two.rs // module used by two.rs
Run Code Online (Sandbox Code Playgroud)

如果通过文件系统中的位置到达相同的代码,那么关键字的意义何在mod?仅用于模块隐私吗?

caf*_*e25 6

我只是对具有多个文件的二进制文件使用推荐的布局

\n
src/\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bin/\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main-one/\n    \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.rs\n    \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo.rs\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main-two/\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.rs\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo.rs\n
Run Code Online (Sandbox Code Playgroud)\n

哪里有 的前一个和类似main-one/main.rs的内容。\n直接输入时,无论如何,您都必须阻止其被检测为二进制文件,这样名称冲突就会自动消失。main-one.rsmain-two
foo.rssrc/bin

\n