gpt4 book ai didi

enums - 使用结构的默认特征作为枚举选项

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

我有一个这样的枚举:

enum States {
A { opts: Vec<States> },
B { opts: Vec<States> },
C { opts: Vec<States> },
}

我想为它实现 Default 特性。不适用于枚举本身:

impl Default for States {
fn default() -> States {
States::A { vec![] }
}
}

但对于 States::AStates::BStates::Copts 具有默认值。可能吗?

最佳答案

目前这是不可能的,因为枚举变体不是一流类型。有一个开放的 RFC 建议“使枚举变体成为一流类型”:RFC 1450 .在接受和实现之前,大多数人为此使用的解决方法是为每个变体制作适当的结构,然后制作一个简单的枚举来包装这些结构:

struct A { opts: Vec<States> }
struct B { opts: Vec<States> }
struct C { opts: Vec<States> }

enum States {
A(A),
B(B),
C(C)
}

然后您可以为ABC 实现Default

impl Default for A {
fn default() -> A {
A { opts: Vec::new() }
}
}

并将它们用作 A::default()B::default()C::default()

关于enums - 使用结构的默认特征作为枚举选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36775864/

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