gpt4 book ai didi

enums - 有没有办法创建枚举值的别名?

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

有没有办法做这样的事情?

enum MyType {
Left,
Right,

#[cfg(universe = "normal")]
Port = Left,
#[cfg(universe = "normal")]
Starboard = Right,

#[cfg(universe = "mirror")]
Port = Right,
#[cfg(universe = "mirror")]
Starboard = Left,

}

如果你真的尝试了,你会得到这个错误(我必须添加 MyType::):

error[E0080]: constant evaluation error
--> <anon>:9:12
|
9 | Port = MyType::Left,
| ^^^^^^^^^^^^ unimplemented constant expression: enum variants

Here是触发该错误的地方。

最佳答案

您可以使用关联常量来获得看起来与枚举变体非常相似的常量:

#[derive(PartialEq, Eq)]
pub enum X {
A,
B,
}

impl X {
pub const A1: X = X::A;
}

关联的常量在枚举内部命名空间,就像普通变体一样。它与模式匹配兼容——即使是无法到达的警告和详尽的匹配规则也能正常工作。

match x {
X::A1 => ...,
X::B => ...,
}

playground

有一些限制:最重要的是,您不能拥有与该值关联的任何数据。您还需要在结构上 #[derive(PartialEq, Eq)]

关于enums - 有没有办法创建枚举值的别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41791969/

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