2 个不稳定版本
新 0.2.0 | 2024 年 8 月 19 日 |
---|---|
0.1.0 | 2024 年 8 月 16 日 |
634 在 Rust 模式 中
每月下载量 112
7KB
safe-discriminant
safe-discriminant
提供了一个极简、与 no_std
兼容的特质和过程宏,用于在零成本下从枚举中提取判别式。它自动生成 unsafe { ... }
块,确保语义安全,因此您不必担心。
安装
此包在 crates.io 上可用,并可通过以下方式轻松添加到您的项目中:
- 将以下行添加到您的 Cargo.toml 中
[dependencies] safe-discriminant = "0.2.0"
- 或者在您的 cargo 项目中运行此命令
$ cargo add safe-discriminant
用法
use safe_discriminant::Discriminant;
#[derive(Discriminant)]
#[repr(i64)]
pub enum Foo<T> {
A = 1,
B(T) = -1,
C { fst: T, snd: T } = -2,
}
fn main() {
let a: Foo<u8> = Foo::A;
let b = Foo::B(5);
let c = Foo::C { fst: 2, snd: 3 };
assert_eq!(a.discriminant(), 1);
assert_eq!(b.discriminant(), -1);
assert_eq!(c.discriminant(), -2);
}
类似项目
- strum 提供了一系列宏,旨在简化枚举的用法。其中之一是
EnumDiscriminants
,它从枚举中提取每个变体的名称并将它们组织到一个单独的枚举中。
依赖关系
~265–710KB
~17K SLoC