gpt4 book ai didi

enums - 枚举变体可以有常量关联值吗?

转载 作者:行者123 更新时间:2023-12-03 11:42:59 24 4
gpt4 key购买 nike

<分区>

我有代码(playground):

use std::collections::HashMap;

// We have some arbitrary struct (given values just placeholders)
struct SomeStruct {
x: f32,
y: usize,
}

fn main() {
// We have some hashmap which contains the names (keys) and properties (values) of items.
// These are known at compile time.
let hashmap: HashMap<&str, SomeStruct> = vec![
("a", SomeStruct { x: 2., y: 2 }),
("b", SomeStruct { x: 3.5, y: 1 }),
("c", SomeStruct { x: 0., y: 5 }),
]
.into_iter()
.collect();

// We then have a bunch of data which arbitrarily references the names of these items.
// This data is also known at compile time.
}

在需要引用项目时不断键入 “a”“b” 等是不好的。

可以使用枚举来改善这一点,例如:

enum Items {
A = SomeStruct { x: 2., y: 2 },
B = SomeStruct { x: 3.5, y: 1 },
C = SomeStruct { x: 0., y: 5 },
}

这实际上是一个 const 枚举,这样在将来引用这些项目时我们可以简单地做 Items::A&Items::A 而不是 'a' 并且必须进行必要的哈希处理。

看来这样做是行不通的。

有没有办法使用const enum?还是有其他更好的解决方案?

虽然这个问题可能与 How can I create enums with constant values in Rust? 重复在该问题下提出的解决方案在使用任意结构时不起作用。 solution vallentin added确实如此,但此解决方案确实更适用于其他解决方案不起作用的情况。我认为它在这个问题的上下文中提供了一个更好更清晰的答案,而其他更简单的解决方案不起作用。

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