From d830113fd46e1c90633709c62a123e2b4918fd63 Mon Sep 17 00:00:00 2001
From: seth <yesifan66@gmail.com>
Date: Wed, 23 Jun 2021 11:59:44 +0800
Subject: [PATCH] complete: options

---
 exercises/option/option1.rs | 10 ++++------
 exercises/option/option2.rs | 10 +++++-----
 exercises/option/option3.rs |  4 +---
 3 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/exercises/option/option1.rs b/exercises/option/option1.rs
index 602ff1a..457f0ce 100644
--- a/exercises/option/option1.rs
+++ b/exercises/option/option1.rs
@@ -1,23 +1,21 @@
 // option1.rs
 // Make me compile! Execute `rustlings hint option1` for hints
 
-// I AM NOT DONE
-
 // you can modify anything EXCEPT for this function's sig
 fn print_number(maybe_number: Option<u16>) {
     println!("printing: {}", maybe_number.unwrap());
 }
 
 fn main() {
-    print_number(13);
-    print_number(99);
+    print_number(Some(13));
+    print_number(Some(99));
 
-    let mut numbers: [Option<u16>; 5];
+    let mut numbers: [Option<u16>; 5] = [Some(1); 5];
     for iter in 0..5 {
         let number_to_add: u16 = {
             ((iter * 1235) + 2) / (4 * 16)
         };
 
-        numbers[iter as usize] = number_to_add;
+        numbers[iter as usize] = Some(number_to_add);
     }
 }
diff --git a/exercises/option/option2.rs b/exercises/option/option2.rs
index c6b83ec..b2f6967 100644
--- a/exercises/option/option2.rs
+++ b/exercises/option/option2.rs
@@ -1,12 +1,10 @@
 // option2.rs
 // Make me compile! Execute `rustlings hint option2` for hints
 
-// I AM NOT DONE
-
 fn main() {
     let optional_word = Some(String::from("rustlings"));
     // TODO: Make this an if let statement whose value is "Some" type
-    word = optional_word {
+    if let Some(word) = optional_word {
         println!("The word is: {}", word);
     } else {
         println!("The optional word doesn't contain anything");
@@ -19,7 +17,9 @@ fn main() {
 
     // TODO: make this a while let statement - remember that vector.pop also adds another layer of Option<T>
     // You can stack `Option<T>`'s into while let and if let
-    integer = optional_integers_vec.pop() {
-        println!("current value: {}", integer);
+    if let Some(integer) = optional_integers_vec.pop(){
+        if let Some(value) = integer {
+            println!("current value: {}", value);
+        }
     }
 }
diff --git a/exercises/option/option3.rs b/exercises/option/option3.rs
index 045d2ac..8fe4cfe 100644
--- a/exercises/option/option3.rs
+++ b/exercises/option/option3.rs
@@ -1,8 +1,6 @@
 // option3.rs
 // Make me compile! Execute `rustlings hint option3` for hints
 
-// I AM NOT DONE
-
 struct Point {
     x: i32,
     y: i32,
@@ -11,7 +9,7 @@ struct Point {
 fn main() {
     let y: Option<Point> = Some(Point { x: 100, y: 200 });
 
-    match y {
+    match &y {
         Some(p) => println!("Co-ordinates are {},{} ", p.x, p.y),
         _ => println!("no match"),
     }