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

标签 rust match

如果找到环境变量SOMEVALUE,它应该绑定(bind)到k:

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

编译这段代码会出现以下错误

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

最佳答案

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

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

等效地,您可以使用 Result::unwrap_or_else :

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

关于rust - 如何从 env::var 返回匹配的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44947920/

相关文章:

rust - 如何为结构的可变引用中的字段换入新值?

redis - 调用使用redis-rs创建redis连接的函数时如何防止生命周期问题

rust - 如何通过引用传递拥有的数组

r - 根据不同的数据集改变新列

rust - 在 Rust 中过滤/查询多键 btree 索引

rust - 为什么结构中的切片需要生命周期,而不是向量?

javascript - 如果一组不匹配,.match() 返回 null

javascript - 正则表达式连续收集单词数组中的任何单词

excel - 查找与一列中的键匹配的值,然后将其应用为键以从第三列返回值

mysql - ID匹配时如何从另一个表中获取名称?