#枚举 # #变体 #生成

samevariant

派生具有相同变体的枚举

4个版本

0.0.4 2024年7月21日
0.0.3 2024年7月21日
0.0.2 2024年5月18日
0.0.1 2023年1月14日

#1879进程宏

Download history 4/week @ 2024-05-11 202/week @ 2024-05-18 14/week @ 2024-05-25 6/week @ 2024-06-01 1/week @ 2024-06-08 1/week @ 2024-06-15 7/week @ 2024-06-29 181/week @ 2024-07-20 25/week @ 2024-07-27 1/week @ 2024-08-03

每月 207 次下载
2 个Crates中使用(通过 good-ormning

ISC 许可证

10KB
206

从另一个枚举的相同变体对派生枚举。

安装

cargo add samevariant

使用

定义一个枚举并使用此派生宏

#[samevariant(pub ABCSameVariant)]
pub enum ABC {
    A,
    B,
    C(i32),
}

它生成一个看起来像的新枚举

enum ABCSameVariant<'l> {
    Nonmatching(&'l ABC, &'l ABC),
    A,
    B,
    C(&'l i32, &'l i32),
}

impl ABCSameVariant {
    fn pairs<'l>(a: &'l ABC, b: &'l ABC) -> ABCSameVariant<'l> {
        ...
    }
}

如果基本枚举有一个变体 Nonmatching,它将用原始枚举名称作为前缀(如 ABCNonmatching)。

仅支持简单和元组变体,类似于结构的变体将导致错误。

依赖关系

~10–21MB
~304K SLoC