我正在尝试从另一个模块调用属于某个模块的函数(用于代码分解、组织等)。
这是我的板条箱结构:
➜ mod_test git:(master) ✗ tree
.
├── Cargo.lock
├── Cargo.toml
└── src
├── bin
│ └── one.rs
├── lib
│ └── two.rs
└── main.rs
3 directories, 5 files
在main
我声明:
pub mod bin {
pub mod one;
}
pub mod lib {
pub mod two;
}
所有这些文件都只包含一个简单的pub fn main() {println!("hello");}
.
此时,一切正常。
现在,是否可以拨打电话?lib::two::main
bin/one.rs
use crate::lib::two;
, use super::lib::two;
,中没有一个use self::super::lib::two;
添加到bin/one.rs
工作中。
编辑:我有:
rustc 1.42.0 (b8cedc004 2020-03-09)
安装在 Linux 5.3.0-45-generic 上,物有所值。编辑2:每当使用
super
关键字时,我都会从以下位置得到这个神秘的错误rustc
:
error[E0433]: failed to resolve: there are too many leading `super` keywords
而且我在任何地方都找不到任何有关此问题的故障排除。
编辑3:在声明模块结构中添加一个
lib.rs
文件,并在作品中编写,但是:src
lib
use mod_test::lib::two;
one.rs
1)它破坏了在我的箱子中不增加“哑模块声明文件”的想法。
main.rs
2)我必须在两个不同的地方(in和inlib.rs
)复制完全相同的信息3)
use mod_test::lib::two;
是唯一有效的语法,使用crate
orsuper
关键字仍然会导致神秘的编译器错误