【发布时间】:2020-04-02 14:13:56
【问题描述】:
我正在尝试从 另一个 模块(用于代码分解、组织、等)调用属于某个模块的函数。
这是我的箱子结构:
➜ 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");}。
此时,一切都正常。
现在,可以从bin/one.rs 拨打lib::two::main 吗?
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:在
src中添加一个lib.rs文件,声明lib模块结构,并在one.rs中写入use mod_test::lib::two;有效,但是:1) 它破坏了在我的板条箱中不增加“哑模块声明文件”的想法。
2) 我必须在两个不同的地方复制完全相同的信息(
main.rs和lib.rs)3)
use mod_test::lib::two;是唯一有效的语法,使用crate或super关键字仍会导致神秘的编译器错误
【问题讨论】:
标签: module rust code-organization rust-crates