我无法将std::num::TryFromIntError
用作TryFrom
实现中的默认错误。是预期的问题,还是文档问题/错误。
#![feature(try_from)]
use std::convert::TryFrom;
use std::num::TryFromIntError;
enum MyEnum {
A,
B,
C,
}
impl TryFrom<u16> for OpCode {
type Error = TryFromIntError;
fn try_from(val: u16) -> Result<Self, Self::Error> {
match val {
0 => Ok(MyEnum::A),
1 => Ok(MyEnum::B),
2 => Ok(MyEnum::C),
_ => Err(TryFromIntError),
}
}
}
编译因以下原因而失败:
error[E0423]: expected function, found struct `TryFromIntError`
--> src/main.rs:18:22
|
18 | _ => Err(TryFromIntError()),
| ^^^^^^^^^^^^^^^ constructor is not visible here due to private fields
最佳答案
TryFromIntError
是具有私有(private)字段的元组结构(因此在文档中为(_)
)。该类型没有公开任何构造实例的方法(例如new
方法或Default
实现),因此无法直接实例化该类型。也许是因为将来可能会增加向错误添加详细信息的可能性(目前,唯一的私有(private)字段是()
,因此错误没有详细信息)。
关于rust - TryFromIntError用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54374979/