铁锈类型铸造选项
Type Casting Option in rust
如何在 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,
};
}
只需 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)
}
根据您的函数名称,也许您想将输出类型实际匹配到 i32
:
pub fn option_t_to_i32_option<T1>(optional_val: Option<T1>) -> Option<i32>
where
T1: Into<i32>,
{
optional_val.map(Into::into)
}
顺便说一句,因为这是一个包装器,所以您可以在任何需要去的地方使用 _.map(Into::into)
而不是 Option<T> => Option<i32>
。
如何在 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,
};
}
只需 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)
}
根据您的函数名称,也许您想将输出类型实际匹配到 i32
:
pub fn option_t_to_i32_option<T1>(optional_val: Option<T1>) -> Option<i32>
where
T1: Into<i32>,
{
optional_val.map(Into::into)
}
顺便说一句,因为这是一个包装器,所以您可以在任何需要去的地方使用 _.map(Into::into)
而不是 Option<T> => Option<i32>
。