Rust 如何实例化此枚举?第二条语句不编译

Rust 如何实例化此枚举?第二条语句不编译,rust,Rust,如何使用此枚举?编译器不喜欢我尝试过的任何东西,我认为这可能与枚举定义有关,而不是它的使用。enum X{ 没有一个 选项(i64) } fn main(){ 设x=x::无;//这很好 设y=X::Some(Some(None));//这不会编译 } 最后一行没有意义。您正在尝试使用X::Some构造X的实例,该实例完全没有定义。 X的语义正确定义可以是None或Option,如下所示: enum X{ 没有一个 一些(选项), } fn main(){ 设x=x::无; 设y=X::一些(

如何使用此枚举?编译器不喜欢我尝试过的任何东西,我认为这可能与枚举定义有关,而不是它的使用。

enum X{
没有一个
选项(i64)
}
fn main(){
设x=x::无;//这很好
设y=X::Some(Some(None));//这不会编译
}
最后一行没有意义。您正在尝试使用X::Some构造X的实例,该实例完全没有定义。
X的语义正确定义可以是None或
Option
,如下所示:

enum X{
没有一个
一些(选项),
}
fn main(){
设x=x::无;
设y=X::一些(无);
}

您的第二个选项称为X::option,而不是X::Some,它包含一个i64,而不是一个选项。不清楚您希望最后一条语句做什么。什么是
X::Some
?您似乎混淆了
X
std::Option
。我想为第二个枚举成员分配None。您希望如何将None分配给使用i64的枚举成员?就是这样!错误在枚举声明中。谢谢你,伊万。
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
}