Overview
Tools to iterate over the values of a type.
Examples
```rust
use enumiterator::{all, cardinality, first, last, next, previous, reverseall, Sequence};
[derive(Debug, PartialEq, Sequence)]
enum Day { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
asserteq!(cardinality::(), 7);
asserteq!(all::().collect::>(), [
Day::Monday,
Day::Tuesday,
Day::Wednesday,
Day::Thursday,
Day::Friday,
Day::Saturday,
Day::Sunday,
]);
asserteq!(first::(), Some(Day::Monday));
asserteq!(last::(), Some(Day::Sunday));
asserteq!(next(&Day::Tuesday), Some(Day::Wednesday));
asserteq!(previous(&Day::Wednesday), Some(Day::Tuesday));
asserteq!(reverseall::().collect::>(), [
Day::Sunday,
Day::Saturday,
Day::Friday,
Day::Thursday,
Day::Wednesday,
Day::Tuesday,
Day::Monday,
]);
```
```rust
use enum_iterator::{cardinality, first, last, Sequence};
[derive(Debug, PartialEq, Sequence)]
struct Foo {
a: bool,
b: u8,
}
asserteq!(cardinality::(), 512);
asserteq!(first::(), Some(Foo { a: false, b: 0 }));
assert_eq!(last::(), Some(Foo { a: true, b: 255 }));
```
Rust version
This crate tracks stable Rust. Minor releases may require a newer Rust version. Patch releases
must not require a newer Rust version.
Contribute
All contributions shall be licensed under the 0BSD license.