[−][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
- Disabled by default.
- Enable to use
#[derive(ParallelIterator, IndexedParallelIterator, ParallelExtend)]
.
-
trusted_len
- Disabled by default.
- Enable to use
#[derive(TrustedLen)]
. - This requires Rust Nightly and you need to enable the unstable
trusted_len
feature gate.
Derive Macros
DoubleEndedIterator | |
ExactSizeIterator | |
Extend | |
FusedIterator | |
Iterator |