From 199f264ad00ea7bd0b9e3cef5d6987776748c8c4 Mon Sep 17 00:00:00 2001
From: seth <yesifan66@qq.com>
Date: Tue, 22 Jun 2021 18:30:30 +0800
Subject: [PATCH] complete: generics

---
 exercises/generics/generics1.rs |  4 +---
 exercises/generics/generics2.rs | 10 +++++-----
 exercises/generics/generics3.rs | 10 +++++-----
 3 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/exercises/generics/generics1.rs b/exercises/generics/generics1.rs
index f93e64a..59432e0 100644
--- a/exercises/generics/generics1.rs
+++ b/exercises/generics/generics1.rs
@@ -3,9 +3,7 @@
 
 // Execute `rustlings hint generics1` for hints!
 
-// 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 1501529..4ffbae1 100644
--- a/exercises/generics/generics2.rs
+++ b/exercises/generics/generics2.rs
@@ -3,14 +3,14 @@
 
 // Execute `rustlings hint generics2` for hints!
 
-// I AM NOT DONE
 
-struct Wrapper {
-    value: u32,
+
+struct Wrapper<T> {
+    value: T,
 }
 
-impl Wrapper {
-    pub fn new(value: u32) -> Self {
+impl<T> Wrapper<T> {
+    pub fn new(value: T) -> Self {
         Wrapper { value }
     }
 }
diff --git a/exercises/generics/generics3.rs b/exercises/generics/generics3.rs
index 64dd9bc..3814793 100644
--- a/exercises/generics/generics3.rs
+++ b/exercises/generics/generics3.rs
@@ -10,15 +10,15 @@
 
 // Execute 'rustlings hint generics3' for hints!
 
-// I AM NOT DONE
+use std::fmt::Display;
 
-pub struct ReportCard {
-    pub grade: f32,
+pub struct ReportCard<T: Display> {
+    pub grade: T,
     pub student_name: String,
     pub student_age: u8,
 }
 
-impl ReportCard {
+impl<T: Display> ReportCard<T> {
     pub fn print(&self) -> String {
         format!("{} ({}) - achieved a grade of {}",
             &self.student_name, &self.student_age, &self.grade)
@@ -46,7 +46,7 @@ mod tests {
     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,
         };