gpt4 book ai didi

enums - 为特定变体派生特征

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

假设我有以下枚举

enum MyEnum {
VariantA,
VariantB,
VariantC,
}

通过这样做,我可以为整个枚举派生出 PartialEq 特征

#[derive(PartialEq)]
enum MyEnum {
VariantA,
VariantB,
VariantC,
}

我想做的是导出特征,但仅限于特定变体,而不是整个枚举。那可能吗? (或者它甚至有意义吗?)。

最佳答案

假设您有如下设置:

#[derive(PartialEq)]
struct VarB{
pub value: u32,
}

#[derive(PartialEq)]
enum MyEnum{
VarA(VarA),
VarB(VarB)
}

VarA 来自不同的 crate ,您无法编译,因为它没有派生 PartialEq(或任何其他外部特征)。

您可以使用新类型模式解决该问题(假设您有权访问相关字段/访问器)

struct MyVarA(VarA);

impl PartialEq for MyVarA{
fn eq(&self, other: &MyVarA) -> bool {
self.0.value == other.0.value
}

fn ne(&self, other: &MyVarA) -> bool {
self.0.value != other.0.value
}
}

#[derive(PartialEq)]
struct VarB{
value: u32,
}

#[derive(PartialEq)]
enum MyEnum{
VarA(MyVarA),
VarB(VarB)
}

更多信息: https://doc.rust-lang.org/rust-by-example/generics/new_types.html

关于enums - 为特定变体派生特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58766221/

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