似乎没有办法用 std .
std
我不喜欢这种冗长的话:
match my_bool { true => Ok(()), false => Err(MyError::False), }
我想用一种衬垫,例如:
let my_bool = true; let my_option = my_bool.to_option(MyObject{}); // true => MyObject{}, false => None let my_result = my_bool.to_result(MyObject{}, MyError{}); // true => MyObject{}, false => MyError{}
最短的代码是什么?
有 boolinator crate . 它定义 the extension trait Boolinator 对于 bool 这增加了一些有用的方法。例子:
boolinator
Boolinator
bool
use boolinator::Boolinator; my_bool.as_some(MyObject {}); // Option<MyObject> my_bool.as_result(MyObject {}, MyError {}); // Result<MyObject, MyError>
一 true 价值导向 Some(_) 或 Ok(_) 而A false 价值导向 None 或 Err(_) .
true
Some(_)
Ok(_)
false
None
Err(_)
有一个 issue about adding functionality like this to std 在RFC存储库中。但看起来不是很快就会发生的。