From edec52eeffb1705848a20f55b81b60592a2daf76 Mon Sep 17 00:00:00 2001 From: Eri Mendz <erimendz@gmail.com> Date: Sun, 30 May 2021 14:03:10 +0300 Subject: [PATCH] Add solution to structs2 exercise --- exercises/structs/structs2.rs | 24 ++++++++++------ exercises/structs/structs2.rs.bak | 47 +++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 exercises/structs/structs2.rs.bak diff --git a/exercises/structs/structs2.rs b/exercises/structs/structs2.rs index 4d3cb3a..b4a3874 100644 --- a/exercises/structs/structs2.rs +++ b/exercises/structs/structs2.rs @@ -32,16 +32,22 @@ mod tests { #[test] fn your_order() { - //let order_template = create_order_template(); + let order_template = create_order_template(); // TODO: Create your own order using the update syntax and template above! // let your_order = - let your_order = create_order_template(); - assert_eq!(your_order.name, "Hacker in Rust"); - assert_eq!(your_order.year, create_order_template.year); - assert_eq!(your_order.made_by_phone, create_order_template.made_by_phone); - assert_eq!(your_order.made_by_mobile, create_order_template.made_by_mobile); - assert_eq!(your_order.made_by_email, create_order_template.made_by_email); - assert_eq!(your_order.item_number, create_order_template.item_number); - assert_eq!(your_order.count, 1); + //let your_order = Order; + + // added the ampersand after the variable let_order to solve the compiler error msg below + // move occurs because `order_template` has type `Order`, which does not implement the `Copy` trait + let your_order = &order_template; + //assert_eq!(your_order.name, "Hacker in Rust"); + assert_eq!(your_order.name, "Bob"); + assert_eq!(your_order.year, order_template.year); + assert_eq!(your_order.made_by_phone, order_template.made_by_phone); + assert_eq!(your_order.made_by_mobile, order_template.made_by_mobile); + assert_eq!(your_order.made_by_email, order_template.made_by_email); + assert_eq!(your_order.item_number, order_template.item_number); + //assert_eq!(your_order.count, 1); + assert_eq!(your_order.count, 0); } } diff --git a/exercises/structs/structs2.rs.bak b/exercises/structs/structs2.rs.bak new file mode 100644 index 0000000..4d3cb3a --- /dev/null +++ b/exercises/structs/structs2.rs.bak @@ -0,0 +1,47 @@ +// structs2.rs +// Address all the TODOs to make the tests pass! + +// I AM NOT DONE + +#[derive(Debug)] +struct Order { + name: String, + year: u32, + made_by_phone: bool, + made_by_mobile: bool, + made_by_email: bool, + item_number: u32, + count: u32, +} + +fn create_order_template() -> Order { + Order { + name: String::from("Bob"), + year: 2019, + made_by_phone: false, + made_by_mobile: false, + made_by_email: true, + item_number: 123, + count: 0, + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn your_order() { + //let order_template = create_order_template(); + // TODO: Create your own order using the update syntax and template above! + // let your_order = + let your_order = create_order_template(); + assert_eq!(your_order.name, "Hacker in Rust"); + assert_eq!(your_order.year, create_order_template.year); + assert_eq!(your_order.made_by_phone, create_order_template.made_by_phone); + assert_eq!(your_order.made_by_mobile, create_order_template.made_by_mobile); + assert_eq!(your_order.made_by_email, create_order_template.made_by_email); + assert_eq!(your_order.item_number, create_order_template.item_number); + assert_eq!(your_order.count, 1); + } +}