## [`DoubleEndedIterator`](https://doc.rust-lang.org/std/iter/trait.DoubleEndedIterator.html) When deriving for enum like the following: ```rust #[derive(DoubleEndedIterator)] enum Enum { A(A), B(B), } ``` Code like this will be generated: ```rust enum Enum { A(A), B(B), } impl ::core::iter::DoubleEndedIterator for Enum where A: ::core::iter::DoubleEndedIterator, B: ::core::iter::DoubleEndedIterator::Item>, { #[inline] fn next_back(&mut self) -> ::core::option::Option { match self { Enum::A(x) => ::core::iter::DoubleEndedIterator::next_back(x), Enum::B(x) => ::core::iter::DoubleEndedIterator::next_back(x), } } } ```