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
Github开源生信云平台 DEMO