From 3cda6fa25939e2857f5de116af976b79179cbcf8 Mon Sep 17 00:00:00 2001 From: Jordan Gong Date: Mon, 31 Aug 2020 14:03:13 +0800 Subject: Manage modules --- restaurant/src/lib.rs | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 restaurant/src/lib.rs (limited to 'restaurant/src/lib.rs') diff --git a/restaurant/src/lib.rs b/restaurant/src/lib.rs new file mode 100644 index 0000000..eaab79f --- /dev/null +++ b/restaurant/src/lib.rs @@ -0,0 +1,77 @@ +mod front_of_house { + pub mod hosting { + pub fn add_to_waitlist() {} + + fn seat_at_table() {} + } + + mod serving { + fn take_order() {} + + fn serve_order() {} + + fn take_payment() {} + } +} + +fn serve_order() {} + +mod back_of_house { + fn fix_incorrect_order() { + cook_order(); + super::serve_order(); + } + + 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("peach"), + } + } + } + + pub enum Appetizer { + Soup, + Salad, + } +} + +pub fn eat_at_restaurant() { + // Absolute path + crate::front_of_house::hosting::add_to_waitlist(); + + // Relative path + 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; + + { + use crate::front_of_house::hosting; + + hosting::add_to_waitlist(); + hosting::add_to_waitlist(); + hosting::add_to_waitlist(); + } + + { + use self::front_of_house::hosting; + + hosting::add_to_waitlist(); + hosting::add_to_waitlist(); + hosting::add_to_waitlist(); + } +} + -- cgit v1.2.3