如何在 Rust 中转换可选值?
这是我想出的方法,它确实有效,但我认为必须有一种更优雅的方法。
pub fn option_t_to_i32_option<T1, T2>(optional_val: Option<T1>) -> Option<T2>
where
T2: From<T1>,
{
return match optional_val {
Some(val) => Some(T2::from(val)),
None => None,
};
}
Run Code Online (Sandbox Code Playgroud)
只是map
Into::into
为了你的限制:
pub fn option_t_to_i32_option<T1, T2>(optional_val: Option<T1>) -> Option<T2>
where
T2: From<T1>,
{
optional_val.map(Into::into)
}
Run Code Online (Sandbox Code Playgroud)
根据您的函数名称,也许您希望将输出类型实际匹配到i32
:
pub fn option_t_to_i32_option<T1>(optional_val: Option<T1>) -> Option<i32>
where
T1: Into<i32>,
{
optional_val.map(Into::into)
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,由于这是一个包装器,因此您可以在_.map(Into::into)
需要的地方使用Option<T> => Option<i32>
。