#枚举 #判别式 #模式 #

explicit-discriminant

强制枚举判别式的宏

4个版本

0.1.4 2023年8月16日
0.1.3 2023年8月16日
0.1.2 2023年8月16日
0.1.0 2023年8月16日

#1699数据结构

Download history • Rust 包仓库 45/week @ 2024-04-08 • Rust 包仓库 102/week @ 2024-04-15 • Rust 包仓库 94/week @ 2024-04-22 • Rust 包仓库 112/week @ 2024-04-29 • Rust 包仓库 61/week @ 2024-05-06 • Rust 包仓库 309/week @ 2024-05-13 • Rust 包仓库 149/week @ 2024-05-20 • Rust 包仓库 48/week @ 2024-05-27 • Rust 包仓库 820/week @ 2024-06-03 • Rust 包仓库 802/week @ 2024-06-10 • Rust 包仓库 752/week @ 2024-06-17 • Rust 包仓库 191/week @ 2024-06-24 • Rust 包仓库 47/week @ 2024-07-01 • Rust 包仓库 363/week @ 2024-07-08 • Rust 包仓库 153/week @ 2024-07-15 • Rust 包仓库 229/week @ 2024-07-22 • Rust 包仓库

每月792 次下载

自定义许可

8KB
114 代码行

explicit-discriminant

CI CD

此crate强制执行枚举的显式判别式。

use explicit_discriminant::ExplicitDiscriminant;

#[derive(ExplicitDiscriminant)]
enum MyEnum {
    One = 1,
    Two = 2,
    Three, // will not compile
    Four = 4
}

您还可以可选地添加模式,强制执行允许的判别式值。

use explicit_discriminant::ExplicitDiscriminant;

#[derive(ExplicitDiscriminant)]
#[pattern(2..=3 | 12..)]
#[pattern(9 | ..-3)]
enum MyEnum {
    MinusFour = -4,
    One = 1, // error here, since not in any of the patterns
    Two = 2,
    Three = 3, 
    Nine = 9,
    Ten = 10, // error here, since not in any of the patterns
    Twelve = 12,
    OneHundred = 100,
}

依赖项

~285–730KB
~17K SLoC