rustlings

solving rustlings ft. dracuxan
git clone [email protected]:dracuxan/rustlings.git
Log | Files | Refs

options2.rs (1037B)


      1 fn main() {
      2     // You can optionally experiment here.
      3 }
      4 
      5 #[cfg(test)]
      6 mod tests {
      7     use core::option::Option::Some;
      8 
      9     #[test]
     10     fn simple_option() {
     11         let target = "rustlings";
     12         let optional_target = Some(target);
     13 
     14         // TODO: Make this an if-let statement whose value is `Some`.
     15         if let Some(word) = optional_target {
     16             assert_eq!(word, target);
     17         }
     18     }
     19 
     20     #[test]
     21     fn layered_option() {
     22         let range = 10;
     23         let mut optional_integers: Vec<Option<i8>> = vec![None];
     24 
     25         for i in 1..=range {
     26             optional_integers.push(Some(i));
     27         }
     28 
     29         let mut cursor = range;
     30 
     31         // TODO: Make this a while-let statement. Remember that `Vec::pop()`
     32         // adds another layer of `Option`. You can do nested pattern matching
     33         // in if-let and while-let statements.
     34         while let Some(Some(integer)) = optional_integers.pop() {
     35             assert_eq!(integer, cursor);
     36             cursor -= 1;
     37         }
     38 
     39         assert_eq!(cursor, 0);
     40     }
     41 }