diff --git a/exercises/option/option2.rs b/exercises/option/option2.rs new file mode 100644 index 0000000..a55f734 --- /dev/null +++ b/exercises/option/option2.rs @@ -0,0 +1,25 @@ +// option2.rs +// Make me compile! Execute `rustlings hint option2` for hints + +// I AM NOT DONE + +fn main() { + let optional_value = Some(String::from("rustlings")); + // Make this an if let statement whose value is "Some" type + value = optional_value { + println!("the value of optional value is: {}", value); + } else { + println!("The optional value doesn't contain anything!"); + } + + let mut optional_values_vec: Vec> = Vec::new(); + for x in 1..10 { + optional_values_vec.push(Some(x)); + } + + // make this a while let statement - remember that vector.pop also adds another layer of Option + // You can stack `Option`'s into while let and if let + value = optional_values_vec.pop() { + println!("current value: {}", value); + } +} diff --git a/info.toml b/info.toml index ec8da2c..04a90cf 100644 --- a/info.toml +++ b/info.toml @@ -534,6 +534,21 @@ and: pattern matching """ +[[exercises]] +name = "option2" +path = "exercises/option/option2.rs" +mode = "compile" +hint = """ +check out: +https://doc.rust-lang.org/rust-by-example/flow_control/if_let.html +https://doc.rust-lang.org/rust-by-example/flow_control/while_let.html + +Remember that Options can be stacked in if let and while let. +For example: Some(Some(variable)) = variable2 + + +""" + [[exercises]] name = "result1" path = "exercises/error_handling/result1.rs"