[][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

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
IndexedParallelIterator
Iterator
ParallelExtend
ParallelIterator
TrustedLen