use auto_enums::enum_derive;
enum Enum {
A(A),
B(B),
}
impl ::core::iter::Iterator for Enum
where
A: ::core::iter::Iterator,
B: ::core::iter::Iterator- ::Item>,
{
type Item = ::Item;
#[inline]
fn next(&mut self) -> ::core::option::Option {
match self {
Enum::A(x) => ::next(x),
Enum::B(x) => ::next(x),
}
}
#[inline]
fn size_hint(&self) -> (usize, ::core::option::Option) {
match self {
Enum::A(x) => ::size_hint(x),
Enum::B(x) => ::size_hint(x),
}
}
#[inline]
fn count(self) -> usize {
match self {
Enum::A(x) => ::count(x),
Enum::B(x) => ::count(x),
}
}
#[inline]
fn last(self) -> ::core::option::Option {
match self {
Enum::A(x) => ::last(x),
Enum::B(x) => ::last(x),
}
}
#[inline]
fn nth(&mut self, n: usize) -> ::core::option::Option {
match self {
Enum::A(x) => ::nth(x, n),
Enum::B(x) => ::nth(x, n),
}
}
#[inline]
#[must_use = "if you really need to exhaust the iterator, consider `.for_each(drop)` instead"]
fn collect<__U: ::core::iter::FromIterator>(self) -> __U {
match self {
Enum::A(x) => ::collect(x),
Enum::B(x) => ::collect(x),
}
}
#[inline]
fn partition<__U, __F>(self, f: __F) -> (__U, __U)
where
__U: ::core::default::Default + ::core::iter::Extend,
__F: ::core::ops::FnMut(&Self::Item) -> bool,
{
match self {
Enum::A(x) => ::partition(x, f),
Enum::B(x) => ::partition(x, f),
}
}
#[inline]
fn fold<__U, __F>(self, init: __U, f: __F) -> __U
where
__F: ::core::ops::FnMut(__U, Self::Item) -> __U,
{
match self {
Enum::A(x) => ::fold(x, init, f),
Enum::B(x) => ::fold(x, init, f),
}
}
#[inline]
fn all<__F>(&mut self, f: __F) -> bool
where
__F: ::core::ops::FnMut(Self::Item) -> bool,
{
match self {
Enum::A(x) => ::all(x, f),
Enum::B(x) => ::all(x, f),
}
}
#[inline]
fn any<__F>(&mut self, f: __F) -> bool
where
__F: ::core::ops::FnMut(Self::Item) -> bool,
{
match self {
Enum::A(x) => ::any(x, f),
Enum::B(x) => ::any(x, f),
}
}
#[inline]
fn find<__P>(&mut self, predicate: __P) -> ::core::option::Option
where
__P: ::core::ops::FnMut(&Self::Item) -> bool,
{
match self {
Enum::A(x) => ::find(x, predicate),
Enum::B(x) => ::find(x, predicate),
}
}
#[inline]
fn find_map<__U, __F>(&mut self, f: __F) -> ::core::option::Option<__U>
where
__F: ::core::ops::FnMut(Self::Item) -> ::core::option::Option<__U>,
{
match self {
Enum::A(x) => ::find_map(x, f),
Enum::B(x) => ::find_map(x, f),
}
}
#[inline]
fn position<__P>(&mut self, predicate: __P) -> ::core::option::Option
where
__P: ::core::ops::FnMut(Self::Item) -> bool,
{
match self {
Enum::A(x) => ::position(x, predicate),
Enum::B(x) => ::position(x, predicate),
}
}
}
unsafe impl ::core::iter::TrustedLen for Enum
where
A: ::core::iter::TrustedLen,
B: ::core::iter::TrustedLen
- ::Item>,
{}
fn main() {}