- 文件分层
文件分层
模块可以分配到文件/目录的层次结构中。让我们将可见性小节例子
的代码拆开分到多个文件中:
$ tree ..|-- my| |-- inaccessible.rs| |-- mod.rs| `-- nested.rs`-- split.rs
在 split.rs 文件:
// 此声明将会查找名为 `my.rs` 或 `my/mod.rs` 的文件,并将该文件的内容插入到// 此作用域名为 `my` 的模块里面。mod my;fn function() {println!("called `function()`");}fn main() {my::function();function();my::indirect_access();my::nested::function();}
在 my/mod.rs 文件:
// 类似地,`mod inaccessible` 和 `mod nested` 将找到 `nested.rs` 和// `inaccessible.rs` 文件,并在它们各自的模块中插入它们的内容。mod inaccessible;pub mod nested;pub fn function() {println!("called `my::function()`");}fn private_function() {println!("called `my::private_function()`");}pub fn indirect_access() {print!("called `my::indirect_access()`, that\n> ");private_function();}
在 my/nested.rs 文件:
pub fn function() {println!("called `my::nested::function()`");}#[allow(dead_code)]fn private_function() {println!("called `my::nested::private_function()`");}
在 my/inaccessible.rs 文件:
#[allow(dead_code)]pub fn public_function() {println!("called `my::inaccessible::public_function()`");}
我们看到代码仍然正常运行,就和前面的一样:
$ rustc split.rs && ./splitcalled `my::function()`called `function()`called `my::indirect_access()`, that> called `my::private_function()`called `my::nested::function()`
