gpt4 book ai didi

rust - 如何在不展开的情况下将 Option> 转换为 Option

转载 作者:行者123 更新时间:2023-11-29 07:55:53 25 4
gpt4 key购买 nike

我正在尝试找到一种转换 Option<String> 的好方法到Option<i8> .

例如,

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()));
}

我想我可以使用 turbo fish 来显式转换类型,如下所示:

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>();
}

最佳答案

您可以使用 ok()unwrap_or() 函数:

fn test() -> Option<Result<u32, ()>> {
Some(Ok(1))
}

fn main() {
let x: Option<Result<_, _>> = test();
println!("{:?}", x.map(|r| r.ok()).unwrap_or(None));
}

关于rust - 如何在不展开的情况下将 Option<Result<T, Error>> 转换为 Option<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41682465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com