gpt4 book ai didi

struct - 访问枚举中的结构

转载 作者:行者123 更新时间:2023-11-29 08:08:51 24 4
gpt4 key购买 nike

如何在 A 类型的 enum 中访问 B_ 类型的 struct 中的字段 c 在这种情况下?

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

enum D_ { D_1, D_2 }

struct B_ {
c: Vec<i32>,
}

像这样明显的东西是行不通的:

let y = A::B;
y.c = Vec::new();

最佳答案

我认为第一个问题是你真正想要的是 y 类型 A,所以它不能有一个名为 c 的字段> 首先。 y 可以是 A::BA::D。只有当 yA::B 变体时,您才能获取变体内部的 B_ 对象,然后获取 c

代码中的第二个问题是您没有将 y 初始化为 A::B 变体。表达式 A::Bfn(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);
}
}

也许你认为 A::B 是一种 B 类型定义“内部” A,这不是枚举的工作方式是 rust 。

关于struct - 访问枚举中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34838531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com