[−][src]Crate iter_enum
#[derive(Iterator, DoubleEndedIterator, ExactSizeIterator, FusedIterator, Extend)] for enums.
Examples
use iter_enum::*; #[derive(Iterator, DoubleEndedIterator, ExactSizeIterator, FusedIterator, Extend)] enum Either<A, B> { A(A), B(B), } fn foo(x: i32) -> impl Iterator<Item = i32> { if x > 0 { Either::A(0..=x) } else { Either::B(std::iter::empty()) } }
See auto_enums crate for how to automate patterns like this.
Supported traits
Iterator- generated codeDoubleEndedIterator- generated codeExactSizeIterator- generated codeFusedIterator- generated codeExtend- generated codeTrustedLen- generated code (requires"trusted_len"feature)ParallelIterator- generated code (requires"rayon"feature)IndexedParallelIterator- generated code (requires"rayon"feature)ParallelExtend- generated code (requires"rayon"feature)
Optional features
rayon- Enable to use
#[derive(ParallelIterator, IndexedParallelIterator, ParallelExtend)].
- Enable to use
trusted_len- Enable to use
#[derive(TrustedLen)]. - Note that this feature is unstable and may cause incompatible changes between patch versions.
- Enable to use
Derive Macros
| DoubleEndedIterator | |
| ExactSizeIterator | |
| Extend | |
| FusedIterator | |
| IndexedParallelIterator | |
| Iterator | |
| ParallelExtend | |
| ParallelIterator | |
| TrustedLen |