Struct 访问枚举内的结构

Struct 访问枚举内的结构,struct,enums,rust,Struct,Enums,Rust,在这种情况下,如何访问B\ucode>类型的c内部struct内部A类型的enum enum A { B(B_), D(D_) } enum D_ { D_1, D_2 } struct B_ { c: Vec<i32>, } 我认为第一个问题是,您真正想要的是y类型为A,因此它首先不能有一个名为c的字段y可以是A::B或A::D。只有当y是A::B变量时,才可以在变量中获取B对象,然后获取c 代码中的第二个问题是没有将y初始化为A::B变量。表达式A:

在这种情况下,如何访问
B\ucode>类型的
c
内部
struct
内部
A类型的
enum

enum A {
    B(B_),
    D(D_)
}

enum D_ { D_1, D_2 }

struct B_ {
    c: Vec<i32>,
}

我认为第一个问题是,您真正想要的是
y
类型为
A
,因此它首先不能有一个名为
c
的字段
y
可以是
A::B
A::D
。只有当
y
A::B
变量时,才可以在变量中获取
B
对象,然后获取
c

代码中的第二个问题是没有将
y
初始化为
A::B
变量。表达式
A::B
的类型为
fn(B_)->A{A::B}
,它是
A
枚举的一种构造函数(由编译器自动生成)

以下代码正确初始化
y
,并获取
c

enum A {
    B(B_),
    D(D_)
}

enum D_ { D_1, D_2 }

struct B_ {
    c: Vec<i32>,
}

fn main() {
    let y = A::B( B_ { c : Vec::new() });

    // Check if y is an A::B, so we can get the B_ object inside
    // by deconstruction. Then we can get c.
    if let A::B(b_) = y {
        println!("{:?}", b_.c);
    }
}
enum A{
B(B),,
D(D_)
}
枚举D{D_1,D_2}
结构B_{
c:Vec,
}
fn main(){
设y=A::B(B_{c:Vec::new()});
//检查y是否是A::B,这样我们就可以将B_u对象放入其中
//通过解构,我们可以得到c。
如果设A::B(B_)=y{
println!(“{:?}”,b_u.c);
}
}
也许您认为
A::B
是一种定义在
A
内部的
B
类型,这不是枚举的工作方式

enum A {
    B(B_),
    D(D_)
}

enum D_ { D_1, D_2 }

struct B_ {
    c: Vec<i32>,
}

fn main() {
    let y = A::B( B_ { c : Vec::new() });

    // Check if y is an A::B, so we can get the B_ object inside
    // by deconstruction. Then we can get c.
    if let A::B(b_) = y {
        println!("{:?}", b_.c);
    }
}