if let 和 match 有什么区别?
其实,你的代码可以使用 match 来改写。
原来的写法:
let s = if let Some(value) = maybe_string {
value
} else {
return Err(String::from("got None"));
};
let s = match maybe_string {
Some(value) => value,
None => return Err(String::from("got None")),
};
rust如何取出 Option Some中真正值
fn main() {
let x: Option<i32> = Some(100);
if let Some(value) = x {
println!("{}", value); // 100
}
}
let x: Option<i32> = Some(100);
let value = match x {
Some(n) => n,
None => 0,
};
println!("{}", value); // 100
let x: Option<i32> = Some(100);
let value = x.unwrap();
println!("{}", value); // 100
let x: Option<i32> = None;
let value = x.unwrap(); // 程序 panic
let x: Option<i32> = None;
let value = x.unwrap_or(0);
println!("{}", value); // 0