Crate iter_enum

source ·
Expand description

#[derive(Iterator, DoubleEndedIterator, ExactSizeIterator, FusedIterator, Extend)] for enums.

§Usage

Add this to your Cargo.toml:

[dependencies]
iter-enum = "1"

Compiler support: requires rustc 1.56+

§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(x..=0)
    } else {
        Either::B(Some(x).into_iter())
    }
}

See auto_enums crate for how to automate patterns like this.

§Supported traits

§Optional features

  • rayon
    • Enable to use #[derive(ParallelIterator, IndexedParallelIterator, ParallelExtend)].
  • auto_enums: A library for to allow multiple return types by automatically generated enum.
  • derive_utils: A procedural macro helper for easily writing derives macros for enums.
  • io-enum: #[derive(Read, Write, Seek, BufRead)] for enums.

Derive Macros§