Rust 模块分文件
rust 的模块机制
初试 Rust 时,对它的 mod 机制很蒙蔽,特别是习惯了 Go 的包机制后。
其实站在编译器的角度来思考就清晰多了。
Rust 编译器只接受 【一个】 .rs文件作为输入,并且只生成一个crate。
所以在 src/main.rs 中,我们使用 mod video; 告诉编译器去在当前位置查找 video.rs 或 ./video/mod.rs。
如,以下目录结构:
$ tree -L 3 src
src
├── main.rs
└── video
├── file.rs
├── mod.rs
└── worker.rs
在此项目中 main.rs 作为入口文件,然后在 main.rs 中定义 video 模块:
于是编译器找到 video/mod.rs 文件:
// 将此mod下的 worker mod (文件:video/worker.rs) 中的 say()函数 发布到与当前同级别的空间(外部可以 video::say() 的方式调用)
pub use say;
// 告诉编译器去当前目录下找 `file.rs` 或 `file/mod.rs`