diff --git a/exercises/structs/structs1.rs b/exercises/structs/structs1.rs index a5d169cf..071eef7d 100644 --- a/exercises/structs/structs1.rs +++ b/exercises/structs/structs1.rs @@ -1,8 +1,6 @@ // structs1.rs // Address all the TODOs to make the tests pass! -// I AM NOT DONE - struct ColorClassicStruct { name: String, hex: String @@ -17,14 +15,10 @@ struct UnitStruct; mod tests { use super::*; - static name:String = String::from("green"); - static hex:String = String::from("#00FF00"); - #[test] fn classic_c_structs() { // TODO: Instantiate a classic c struct! - let green = ColorClassicStruct(name:name, hex:hex); - + let green = ColorClassicStruct { name: String::from("green"), hex: String::from("#00FF00")}; assert_eq!(green.name, "green"); assert_eq!(green.hex, "#00FF00"); } @@ -32,7 +26,7 @@ mod tests { #[test] fn tuple_structs() { // TODO: Instantiate a tuple struct! - let green = ColorTupleStruct(name, hex); + let green = ColorTupleStruct(String::from("green"), String::from("#00FF00")); assert_eq!(green.0, "green"); assert_eq!(green.1, "#00FF00"); @@ -41,7 +35,7 @@ mod tests { #[test] fn unit_structs() { // TODO: Instantiate a unit struct! - let unit_struct = UnitStruct(name, hex); + let unit_struct = UnitStruct; let message = format!("{:?}s are fun!", unit_struct); assert_eq!(message, "UnitStructs are fun!"); diff --git a/exercises/structs/structs2.rs b/exercises/structs/structs2.rs index f9c6427d..2514feea 100644 --- a/exercises/structs/structs2.rs +++ b/exercises/structs/structs2.rs @@ -1,8 +1,6 @@ // structs2.rs // Address all the TODOs to make the tests pass! -// I AM NOT DONE - #[derive(Debug)] struct Order { name: String, @@ -34,7 +32,11 @@ 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 mut your_order = Order{ + name: String::from("Hacker in Rust"), + count: 1, + ..order_template}; + 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); diff --git a/exercises/structs/structs3.rs b/exercises/structs/structs3.rs index a80d0625..40366ada 100644 --- a/exercises/structs/structs3.rs +++ b/exercises/structs/structs3.rs @@ -4,8 +4,6 @@ // Make the code compile and the tests pass! // If you have issues execute `rustlings hint structs3` -// I AM NOT DONE - #[derive(Debug)] struct Package { sender_country: String, @@ -16,6 +14,7 @@ struct Package { impl Package { fn new(sender_country: String, recipient_country: String, weight_in_grams: i32) -> Package { if weight_in_grams <= 0 { + panic!("weightless parcel"); // Something goes here... } else { return Package { @@ -26,12 +25,12 @@ impl Package { } } - fn is_international(&self) -> ??? { - // Something goes here... + fn is_international(&self) -> bool { + return self.sender_country != self.recipient_country; } - fn get_fees(&self, cents_per_gram: i32) -> ??? { - // Something goes here... + fn get_fees(&self, cents_per_gram: i32) -> i32 { + return self.weight_in_grams * cents_per_gram; } } @@ -73,7 +72,7 @@ mod tests { let sender_country = String::from("Spain"); let recipient_country = String::from("Spain"); - let cents_per_gram = ???; + let cents_per_gram = 3; let package = Package::new(sender_country, recipient_country, 1500);