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.