有没有办法使用现有的结构作为枚举变体?

2024-05-13

我使用枚举来实现多态性,类似于以下内容:

enum MyType {
    Variant1 { a: i32, b: i32 },
    Variant2 { a: bool, b: bool },
}

有没有干净的方法来使用现有的结构Variant1 and Variant2?我做了以下事情:

struct Variant1 {
    a: i32,
    b: i32,
}

struct Variant2 {
    a: bool,
    b: bool,
}

enum MyType {
    Variant1(Variant1),
    Variant2(Variant2),
}

但感觉很笨重。我想知道是否有更好的方法来完成类似的事情。


有多个关于使枚举变体成为自己的类型的 RFC:

  • RFC 1450:枚举变体的类型 https://github.com/rust-lang/rfcs/pull/1450
  • RFC 2593:枚举变体类型 https://github.com/rust-lang/rfcs/pull/2593

不幸的是,它们已被推迟或尚未决定,因为这不被视为语言优先事项。

这意味着现在,您提出的方法是拥有枚举变体类型的唯一方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法使用现有的结构作为枚举变体? 的相关文章

随机推荐