Expand description
#[derive(Iterator, DoubleEndedIterator, ExactSizeIterator, FusedIterator, Extend)] for enums.
§Usage
Add this to your Cargo.toml:
[dependencies]
iter-enum = "1"§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
Iterator- example | generated codeDoubleEndedIterator- example | generated codeExactSizeIterator- example | generated codeFusedIterator- example | generated codeExtend- example | generated codeParallelIterator(requires"rayon"feature) - example | generated codeIndexedParallelIterator(requires"rayon"feature) - example | generated codeParallelExtend(requires"rayon"feature) - example | generated code
§Optional features
rayon- Enable to use
#[derive(ParallelIterator, IndexedParallelIterator, ParallelExtend)].
- Enable to use
§Related Projects
- 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.