rust笔记7 rust中的包管理
rust相比于C++,一个优势在于有一个现代化的包管理系统,我们不用搞各种命令空间和依赖的问题。这里主要记录了一般文件打包的方式。
rust中声明包的关键字是mod,如果是公共的,则需要声明为pub mod。
rust中,每个文件都是一个包,文件名就是包名。如果是和main.rs同级的文件,可以直接使用文件名作为包名。如果有多级目录,那么每个目录下,都要有一个mod.rs作为包的入口,这点类似于python的__init__.py文件;区别在于,rust的mod.rs文件中需要显式地说明当前目录下的包名,以及是否是pub类型的。
下面给出一个代码结构实例:
从里往外分析,每个文件的内容如下: ak.rs
pub mod ak_47 {
    pub fn fire() {
        println!("AK-46 fire");
    }
} 
mod.rs,这是long_gun的入口文件:
pub mod ak; // 声明当前的包中有ak
my_gun.rs
pub fn my_gun1_fire() {
    println!("my_gun fire");
} 
mod.rs,和my_gun.rs同级别的:
pub mod my_gun; pub mod long_gun;
car.rs
pub mod ferrari {
    pub fn run() {
        println!("ferrari run");
    }
}
pub mod bmw {
    pub fn run() {
        println!("bmw run");
    }
} 
main.rs,这是程序的入口,注意不同的引用方式:
mod car;
use car::bmw;
mod gun;
use car::ferrari as f;
fn main() {
    car::ferrari::run();
    f::run();
    bmw::run();
    gun::my_gun::my_gun1_fire();
    gun::long_gun::ak::ak_47::fire();
} 
最后的输出结果是:
ferrari run ferrari run bmw run my_gun fire AK-46 fire

