2 个版本

0.1.1 2024年3月25日
0.1.0 2024年3月25日

#704Rust 模式

每月 27 次下载

MIT/Apache

8KB

Enum Rotate

Version Minimum Rust version: 1.36

将枚举视为迭代器。

此软件包提供了 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