rust module、path、crate、package

mod

mod front_of_house {
    //饭店前台
    pub mod hosting {
        pub fn add_to_waitlist() {} //公有
        pub fn seat_at_table() {} //默认私有
    }
    mod serving {
        fn take_order() {}
        fn serve_order() {}
        fn take_payment() {}
    }
}
// crate
//  └── front_of_house
//      ├── hosting
//      │   ├── add_to_waitlist
//      │   └── seat_at_table
//      └── serving
//          ├── take_order
//          ├── serve_order
//          └── take_payment

path

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

pub struct、pub enum

mod back_of_house {
    fn fix_incorrect_order() {
        cook_order();
        super::serve_order();
        super::front_of_house::hosting::add_to_waitlist();
    }
    fn cook_order() {}

    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的使用

pub fn eat_at_restaurant_2() {
    let mut meal = back_of_house::Breakfast::summer("Rye");
    meal.toast = String::from("Wheat");
    println!("I'd like {} toast please", meal.toast);
    // meal.seasonal_fruit//不可用

    let order1 = back_of_house::Appetizer::Soup;
    let order2 = back_of_house::Appetizer::Salad;

}

完整代码 lib.rs

mod front_of_house {
    //饭店前台
    pub mod hosting {
        pub fn add_to_waitlist() {} //公有
        pub fn seat_at_table() {} //默认私有
    }
    mod serving {
        fn take_order() {}
        fn serve_order() {}
        fn take_payment() {}
    }
}

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

// crate
//  └── front_of_house
//      ├── hosting
//      │   ├── add_to_waitlist
//      │   └── seat_at_table
//      └── serving
//          ├── take_order
//          ├── serve_order
//          └── take_payment

fn serve_order() {}

mod back_of_house {
    fn fix_incorrect_order() {
        cook_order();
        super::serve_order();
        super::front_of_house::hosting::add_to_waitlist();
    }
    fn cook_order() {}

    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_2() {
    let mut meal = back_of_house::Breakfast::summer("Rye");
    meal.toast = String::from("Wheat");
    println!("I'd like {} toast please", meal.toast);
    // meal.seasonal_fruit//不可用

    let order1 = back_of_house::Appetizer::Soup;
    let order2 = back_of_house::Appetizer::Salad;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值