如何从env :: var返回匹配的值?

duc*_*uck 1 match rust

如果SOMEVALUE找到环境变量,则应绑定到k:

let k = match env::var(SOMEVALUE) {
    Ok(val) => {return val},
    Err(e) => println!("could not find {}: {}", SOMEVALUE, e),
};
Run Code Online (Sandbox Code Playgroud)

编译此代码会出现以下错误

   |
11 |         Ok(val) => {return val},
   |                            ^^^ expected (), found struct `std::string::String`
   |
   = note: expected type `()`
              found type `std::string::String`
Run Code Online (Sandbox Code Playgroud)

lje*_*drz 8

Victor写的是正确的,但你可能想要实际绑定一个值k; 在这种情况下,您应该将代码更改为:

let k = match env::var(SOMEVALUE) {
    Ok(val) => val,
    Err(e) => panic!("could not find {}: {}", SOMEVALUE, e),
};
Run Code Online (Sandbox Code Playgroud)

同样,您可以使用Result::unwrap_or_else:

let k = env::var(SOMEVALUE).unwrap_or_else(|e| {
    panic!("could not find {}: {}", SOMEVALUE, e)
});
Run Code Online (Sandbox Code Playgroud)