// options2.rs // Execute `rustlings hint options2` or use the `hint` watch subcommand for a hint. #[cfg(test)] mod tests { use super::*; #[test] fn simple_option() { let target = "rustlings"; let optional_target = Some(target); // TODO: Make this an if let statement whose value is "Some" type if let word = optional_target { assert_eq!(word.unwrap(), target); } } #[test] fn layered_option() { let mut range = 10; let mut optional_integers: Vec> = Vec::new(); for i in 0..(range + 1) { optional_integers.push(Some(i)); } println!("{}", optional_integers.len()); // TODO: 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 while let integer = optional_integers.pop() { //Option> vec.pop()本身会新套一层 option if integer == None { break; }; assert_eq!(integer.unwrap().unwrap(), range); range -= 1; } } }