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"), }