From 8039ced662746119159c39ea7689bdb13938046f Mon Sep 17 00:00:00 2001 From: Enrico Bozzolini Date: Fri, 21 Aug 2020 22:05:16 +0200 Subject: [PATCH] Solve last struct and generics --- exercises/generics/generics1.rs | 4 +--- exercises/generics/generics2.rs | 11 +++++------ exercises/generics/generics3.rs | 12 +++++------- exercises/structs/structs3.rs | 6 +++--- 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/exercises/generics/generics1.rs b/exercises/generics/generics1.rs index d075a4d2..62e2f005 100644 --- a/exercises/generics/generics1.rs +++ b/exercises/generics/generics1.rs @@ -1,10 +1,8 @@ // This shopping list program isn't compiling! // Use your knowledge of generics to fix it. -// I AM NOT DONE - fn main() { - let mut shopping_list: Vec = Vec::new(); + let mut shopping_list: Vec<&str> = Vec::new(); shopping_list.push("milk"); } diff --git a/exercises/generics/generics2.rs b/exercises/generics/generics2.rs index 23025aaa..ad69c588 100644 --- a/exercises/generics/generics2.rs +++ b/exercises/generics/generics2.rs @@ -1,13 +1,12 @@ // This powerful wrapper provides the ability to store a positive integer value. // Rewrite it using generics so that it supports wrapping ANY type. -// I AM NOT DONE -struct Wrapper { - value: u32 -} +struct Wrapper { + value: T +} -impl Wrapper { - pub fn new(value: u32) -> Self { +impl Wrapper { + pub fn new(value: T) -> Self { Wrapper { value } } } diff --git a/exercises/generics/generics3.rs b/exercises/generics/generics3.rs index c76425c3..0801f842 100644 --- a/exercises/generics/generics3.rs +++ b/exercises/generics/generics3.rs @@ -7,17 +7,16 @@ // Make the necessary code changes to support alphabetical report cards, thereby making // the second test pass. -// I AM NOT DONE -pub struct ReportCard { - pub grade: f32, +pub struct ReportCard { + pub grade: T, pub student_name: String, pub student_age: u8, } -impl ReportCard { +impl ReportCard { pub fn print(&self) -> String { format!("{} ({}) - achieved a grade of {}", - &self.student_name, &self.student_age, &self.grade) + &self.student_name, &self.student_age, &self.grade.to_string()) } } @@ -37,9 +36,8 @@ mod tests { #[test] fn generate_alphabetic_report_card() { - // TODO: Make sure to change the grade here after you finish the exercise. let report_card = ReportCard { - grade: 2.1, + grade: "A+", student_name: "Gary Plotter".to_string(), student_age: 11, }; diff --git a/exercises/structs/structs3.rs b/exercises/structs/structs3.rs index e4c047e4..84b1638d 100644 --- a/exercises/structs/structs3.rs +++ b/exercises/structs/structs3.rs @@ -22,12 +22,12 @@ impl Package { fn is_international(&self) -> bool { // Something goes here... - self.from != self.to + self.recipient_country != self.sender_country } fn get_fees(&self, cents_per_kg: i32) -> i32 { // Something goes here... (beware of grams to kg conversion) - self.weight * cost_per_kg + (self.weight_in_grams * cents_per_kg) / 100 } } @@ -59,7 +59,7 @@ mod tests { let sender_country = String::from("Spain"); let recipient_country = String::from("Spain"); - let cents_per_kg = 8.0; + let cents_per_kg = 300; let package = Package::new(sender_country, recipient_country, 1500);