2 个版本
0.1.1 | 2024年3月25日 |
---|---|
0.1.0 | 2024年3月25日 |
#704 在 Rust 模式
每月 27 次下载
8KB
Enum Rotate
将枚举视为迭代器。
此软件包提供了 EnumRotate
trait 以及相应的 derive 宏,允许您
- 获取枚举任何变体的下一个和上一个变体
- 以预定义的(并可自定义的)顺序迭代枚举的变体
- 从特定的变体开始迭代枚举的变体
使用方法
use enum_rotate::EnumRotate;
use Enum::*;
#[derive(EnumRotate, PartialEq)]
enum Enum { A, B, C }
fn main() {
assert_eq!(A.next(), B);
assert_eq!(A.prev(), C);
assert_eq!(
Enum::iter().collect::<Vec<_>>(),
vec![A, B, C],
);
assert_eq!(
C.iter_from().collect::<Vec<_>>(),
vec![C, A, B],
);
}
还可以指定枚举变体的自定义 迭代顺序。
use enum_rotate::EnumRotate;
use Enum::*;
#[derive(EnumRotate, PartialEq)]
#[iteration_order(B, A, C)]
enum Enum { A, B, C }
fn main() {
assert_eq!(
Enum::iter().collect::<Vec<_>>(),
vec![B, A, C],
);
}
依赖关系
~320–780KB
~18K SLoC