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);
}