1#[derive(Debug)]
2struct 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
12fn 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
24fn main() {
25 // You can optionally experiment here.
26}
27
28#[cfg(test)]
29mod 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}