Add solution to structs2.rs

This commit is contained in:
Eri Mendz 2021-05-31 11:09:25 +03:00
parent edec52eeff
commit 301e378b4d

View file

@ -1,7 +1,7 @@
// structs2.rs
// Address all the TODOs to make the tests pass!
// I AM NOT DONE
// Not Done
#[derive(Debug)]
struct Order {
@ -26,6 +26,12 @@ fn create_order_template() -> Order {
}
}
// let your_order = Order{
// name: String::from("Hacker in Rust"),
// count: 1,
// ..order_template //dot dot operator meaning the rest of struct fields remains the same
// };
#[cfg(test)]
mod tests {
use super::*;
@ -34,20 +40,21 @@ mod tests {
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 = 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");
// this struct is moved from above to inside this function.
// create own struct version changing the name and count while the remaining fields remain the same
let your_order = Order{
name: String::from("Hacker in Rust"),
count: 1,
..order_template //dot dot operator meaning the rest of struct fields remain the same
};
assert_eq!(your_order.name, "Hacker in Rust");
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);
assert_eq!(your_order.count, 1);
//assert_eq!(your_order.count, 0);
}
}