structs2.rs (1267B)
1 #[derive(Debug)] 2 struct Order { 3 name: String, 4 year: u32, 5 made_by_phone: bool, 6 made_by_mobile: bool, 7 made_by_email: bool, 8 item_number: u32, 9 count: u32, 10 } 11 12 fn create_order_template() -> Order { 13 Order { 14 name: String::from("Bob"), 15 year: 2019, 16 made_by_phone: false, 17 made_by_mobile: false, 18 made_by_email: true, 19 item_number: 123, 20 count: 0, 21 } 22 } 23 24 fn main() { 25 // You can optionally experiment here. 26 } 27 28 #[cfg(test)] 29 mod tests { 30 use super::*; 31 32 #[test] 33 fn your_order() { 34 let order_template = create_order_template(); 35 36 let your_order = Order { 37 name: String::from("Hacker in Rust"), 38 count: 1, 39 // Struct update syntax 40 ..order_template 41 }; 42 43 assert_eq!(your_order.name, "Hacker in Rust"); 44 assert_eq!(your_order.year, order_template.year); 45 assert_eq!(your_order.made_by_phone, order_template.made_by_phone); 46 assert_eq!(your_order.made_by_mobile, order_template.made_by_mobile); 47 assert_eq!(your_order.made_by_email, order_template.made_by_email); 48 assert_eq!(your_order.item_number, order_template.item_number); 49 assert_eq!(your_order.count, 1); 50 } 51 }