[−][src]Crate iterator_enum
#[derive(Iterator, DoubleEndedIterator, ExactSizeIterator, FusedIterator, Extend)] for enums.
Examples
use iterator_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(x..=0) } else { Either::B(Some(x).into_iter()) } }
See auto_enums for how to automate patterns like this.
Supported traits
Iterator
DoubleEndedIterator
ExactSizeIterator
FusedIterator
TrustedLen
(requires"trusted_len"
crate feature)Extend
See auto_enums#11 for other traits.
Crate Features
-
std
- Enabled by default.
- Generate code for
std
library. - Disable this feature to generate code for
no_std
.
-
try_trait
- Disabled by default.
- Make iterator implementation more effective.
- This requires Rust Nightly and you need to enable the unstable
try_trait
feature gate.
-
trusted_len
- Disabled by default.
- Use
#[derive(TrustedLen)]
. - This requires Rust Nightly and you need to enable the unstable
trusted_len
feature gate.
-
exact_size_is_empty
- Disabled by default.
- Implements
ExactSizeIterator::is_empty
. - This requires Rust Nightly and you need to enable the unstable
exact_size_is_empty
feature gate.
Derive Macros
DoubleEndedIterator | |
ExactSizeIterator | |
Extend | |
FusedIterator | |
Iterator | |
TrustedLen |