走进Rust:Crate、模板

Rust大约 1377 字

Crate

src/main.rs

构建成二进制

src/lib.rs

构建成依赖包

Module

Rust中的items(函数、方法、结构体、枚举、模块和常量)默认都是私有的,父模块中私有的items不能在子模块中使用,而子module的私有items可以在父模块中使用。原因是子模块包装并隐藏了它们的实现细节,但是子模块可以看到定义它们的上下文。

如果模块中的结构体定义为pub的,其字段也必须指定为pub,否则将是默认私有的。而且如果结构体有字段是私有的,必须提供初始化结构体函数。

如果模块中的枚举定义为pub的。其字段默认都为pub

mod front_of_house {
    pub mod hosting {
        pub fn add_to_waitlist() {
            println!("add_to_waitlist")
        }

        fn seat_at_table() {}
    }

    mod serving {
        fn take_order() {}

        fn serve_order() {}

        fn take_payment() {}
    }
}

mod back_of_house {
    pub struct Breakfast {
        pub toast: String,
        seasonal_fruit: String,
    }

    impl Breakfast {
        pub fn summer(toast: &str) -> Breakfast {
            Breakfast {
                toast: String::from(toast),
                seasonal_fruit: String::from("peaches"),
            }
        }
    }

    pub enum Appetizer {
        Soup,
        Salad,
    }
}

pub fn eat_at_restaurant() {
    // 绝对路径
    crate::front_of_house::hosting::add_to_waitlist();

    // 相对路径
    front_of_house::hosting::add_to_waitlist();

    let mut meal = back_of_house::Breakfast::summer("Rye");

    meal.toast = String::from("Wheat");
    println!("I'd like {} toast please", meal.toast);

    let order1 = back_of_house::Appetizer::Soup;
    let order2 = back_of_house::Appetizer::Salad;
}
阅读 107 · 发布于 2020-07-14

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看换一批