#枚举 #迭代器 #变体 #基数 #枚举 #派生调试

enum-iterator

遍历类型所有值的工具(例如,枚举的所有变体)

24个版本 (13个稳定版)

2.1.0 2024年5月1日
2.0.0 2024年2月25日
1.5.0 2024年1月15日
1.4.1 2023年5月4日
0.2.0 2018年7月2日

Rust模式 中排名 33

Download history 136477/week @ 2024-05-03 141947/week @ 2024-05-10 162020/week @ 2024-05-17 146075/week @ 2024-05-24 158442/week @ 2024-05-31 156189/week @ 2024-06-07 152357/week @ 2024-06-14 147297/week @ 2024-06-21 143673/week @ 2024-06-28 149604/week @ 2024-07-05 158154/week @ 2024-07-12 155280/week @ 2024-07-19 154447/week @ 2024-07-26 170448/week @ 2024-08-02 163006/week @ 2024-08-09 132295/week @ 2024-08-16

每月下载量 648,662
1,275 包(150个直接使用)中使用

0BSD 许可证

34KB
628

概述

遍历类型值的工具。

示例

use enum_iterator::{all, cardinality, first, last, next, previous, reverse_all, Sequence};

#[derive(Debug, PartialEq, Sequence)]
enum Day { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

assert_eq!(cardinality::<Day>(), 7);
assert_eq!(all::<Day>().collect::<Vec<_>>(), [
    Day::Monday,
    Day::Tuesday,
    Day::Wednesday,
    Day::Thursday,
    Day::Friday,
    Day::Saturday,
    Day::Sunday,
]);
assert_eq!(first::<Day>(), Some(Day::Monday));
assert_eq!(last::<Day>(), Some(Day::Sunday));
assert_eq!(next(&Day::Tuesday), Some(Day::Wednesday));
assert_eq!(previous(&Day::Wednesday), Some(Day::Tuesday));
assert_eq!(reverse_all::<Day>().collect::<Vec<_>>(), [
    Day::Sunday,
    Day::Saturday,
    Day::Friday,
    Day::Thursday,
    Day::Wednesday,
    Day::Tuesday,
    Day::Monday,
]);
use enum_iterator::{cardinality, first, last, Sequence};

#[derive(Debug, PartialEq, Sequence)]
struct Foo {
    a: bool,
    b: u8,
}

assert_eq!(cardinality::<Foo>(), 512);
assert_eq!(first::<Foo>(), Some(Foo { a: false, b: 0 }));
assert_eq!(last::<Foo>(), Some(Foo { a: true, b: 255 }));

Rust版本

此包跟踪稳定版Rust。次要版本可能需要更高版本的Rust。补丁版本不得需要更高版本的Rust。

贡献

所有贡献均须根据 0BSD 许可证 许可。

依赖项

~270–720KB
~17K SLoC