## [`IndexedParallelIterator`](https://docs.rs/rayon/1.0/rayon/iter/trait.IndexedParallelIterator.html)
When deriving for enum like the following:
```rust
#[enum(IndexedParallelIterator)]
enum Enum {
A(A),
B(B),
}
```
Code like this will be generated:
```rust
enum Enum {
A(A),
B(B),
}
impl ::rayon::iter::IndexedParallelIterator for Enum
where
A: ::rayon::iter::IndexedParallelIterator,
B: ::rayon::iter::IndexedParallelIterator- ::Item>,
{
#[inline]
fn drive<__C>(self, consumer: __C) -> __C::Result
where
__C: ::rayon::iter::plumbing::Consumer,
{
match self {
Enum::A(x) => ::rayon::iter::IndexedParallelIterator::drive(x, consumer),
Enum::B(x) => ::rayon::iter::IndexedParallelIterator::drive(x, consumer),
}
}
#[inline]
fn len(&self) -> usize {
match self {
Enum::A(x) => ::rayon::iter::IndexedParallelIterator::len(x),
Enum::B(x) => ::rayon::iter::IndexedParallelIterator::len(x),
}
}
#[inline]
fn with_producer<__CB>(self, callback: __CB) -> __CB::Output
where
__CB: ::rayon::iter::plumbing::ProducerCallback,
{
match self {
Enum::A(x) => ::rayon::iter::IndexedParallelIterator::opt_len(x),
Enum::B(x) => ::rayon::iter::IndexedParallelIterator::opt_len(x),
}
}
}
```