OPTIONALS
- Option in rust can be either be Some or None. (ie, a value or no value)
- The below codes shows basic optional usage
fn main(){ let value: Option<i32> = 32; let value2: Option<&str> = None; }
- You can unwrap the value of option safely like below:
match value2{ Some(name: &str) => println!("{}",name), _ => println!("No name") }
- Or you can unsafely unwrap it like below:
let name: &str = value.expect(msg:"No name found"); println!("{}", name);
- Or like below:
let name: &str = value.unwrap(); println!("{}", name);
- You can change the value of option like below:
let mut age: Option<i32> = Some(40); match age.as_mut(){ Some(age: &mut i32) => *age += 4, None => {} } println!("Age is {}", age);
- You can unwrap multiple option like below:
let age1: Option<i32> = Some(40); let age2: Option<i32> = Some(50); let age3: Option<i32> = Some(60); if let (Some(age1: i32), Some(age2: i32), Some(age3: i32)) = (age1, age2, age3){ println!("Age is {}, {}, {}", age1, age2, age3); }
- You can unwrap with default value like below:
let fruit: Option<&str> = None; let unwrapped: &str = fruit.unwrap_or(default:"Grapes"); println!("{}", unwrapped);
- You can unwrap with function like below:
let fruit: Option<&str> = None; let unwrapped: &str = fruit.unwrap_or_else(||{ "Grapes" }); println!("{}", unwrapped);
- You can check if option is some or None like below:
let fruit: Option<&str> = None; if name.is_some(){ println!("Value is present"); }
- You can unwrap with default value like below:
fn main(){ let age: Option<i32> = None; let age: i32 = age.unwrap_or_default(); println!("Age {}", age); }
- You can perform map on option like below:
fn main(){ let age: Option<i32> = None; let double_age: Option<i32> = age.map(|x| x*2); println!("Age {}", double_age.unwrap_or_default); }
Comments
Post a Comment