## [`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), } } } ```