如何实例化这个enum ?第二个语句不能编译


enum X{
None,
Option(i64)
}
fn main() {
println!("Hello, world!");
let x = X::None;  // this is fine
let y = X::Some(Some(None));   // this does not compile
}

如何使用这个enum ?编译器不喜欢我尝试的任何操作,我认为这可能与枚举的定义有关,而不是与枚举的使用有关。

enum X{
None,
Option(i64)
}
fn main() {
let x = X::None;  // this is fine
let y = X::Some(Some(None));   // this does not compile
}

最后一行没有意义。您正在尝试使用X::Some构造一个X的实例,该实例根本没有定义。
对于可以是None或Option<i64>的X,语义上正确的定义如下:

enum X {
None,
Some(Option<i64>),
}
fn main() {
let x = X::None;
let y = X::Some(None);
}

最新更新