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