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

Crate Features

  • 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