我正试图找到一个好方法将Option<String>
转换为Option<i8>
。如何将选项<结果<T, Error>>转换为选项<T>而不打开它?
例如,
use std::str::FromStr;
fn main() {
let some_option: Option<String> = Some("too".to_owned());
let new_option: Option<i8> = some_option.map(|x| i8::from_str(x.as_str()));
}
我想我可以使用涡轮增压鱼显式转换类型,这样是这样的:
use std::str::FromStr;
fn main() {
let some_option: Option<String> = Some("too".to_owned());
let new_option: Option<i8> = some_option.map::<Option<i8>>(|x| i8::from_str(x.as_str()));
}
然而,编译器指出,这是不正确数量的参数,所以我认为这可能工作,但它不:
use std::str::FromStr;
fn main() {
let some_option: Option<String> = Some("too".to_owned());
let new_option: Option<i8> = some_option.map::<Option<i8>,i8::from_str>();
}