rust使用module的概念来管理软件。如一个mod最直接的形式,调用者和mod在同一个文件。

mod grandfather {
    pub mod father {
        pub fn son() {
            println!("son");
        }
    }
}

fn main () {
    grandfather::father::son();
}

​ 每一级都需要pub说明,前一级的pub不能覆盖子一层也为pub。为了进一步的简化,可以使用use进行重导出

fn main() {
    use grandfather::father::son;
    son();
}

​ 当然模块一般不和调用者一个文件,可以直接写成一个独立的文件如:

//src/test.rs

//src/main.rs
mod test;
fn main() {
    test::grandfather::father::son();
}

​ 如果这里工程本身就是一个crate,我们可以使用pub use进行向外导出。

mod test;
pub use test::grandfather::father::son;
fn main() {
    son();
}

或者直接

pub mod test;

​ 对于使用标准库和外部库的情况。我们可以直接用

use rand::Rng;
//或者
use crate::rand::Rang;