【发布时间】:2021-11-18 22:10:32
【问题描述】:
有没有比解包更优雅的方式将选项枚举转换为选项整数?
enum SomeEnum {
Item1 = 0,
Item2 = 1
}
fn main() {
let value = SomeEnum::Item1;
let option_integer: Option<i16> = value.into();
}
不满足特征绑定std::option::Option<i16>: From<std::option::Option<SomeEnum>>。
这可行,但我认为此代码不必要的样板:
enum SomeEnum {
Item1 = 0,
Item2 = 1
}
fn main() {
let value = Some(SomeEnum::Item1);
let option_integer: Option<i16> = match value {
Some(some_enum) => Some(some_enum as i16),
None => None
};
}
【问题讨论】:
-
您的第二个 sn-p 无法编译。你的意思是把
value变成Option<SemeEnum>? -
(value as i16).into()呢? -
或
Option::from(value as i16) -
您的代码与您的描述和错误消息都不匹配。对于这两个样本,我们应该阅读
let value = Some (SomeEnum::Item1);吗?