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