use fallible_iterator::{FallibleIterator, IntoFallibleIterator};
use crate::{
FromFallibleIter, FromFallibleIterRef, FromIntoFallibleIter, FromIntoIter, FromIter,
FromIterRef,
};
pub trait IteratorExt<I: Iterator> {
fn into_lender(self) -> FromIter<I>;
}
impl<I: Iterator> IteratorExt<I> for I {
#[inline(always)]
fn into_lender(self) -> FromIter<I> {
crate::from_iter(self)
}
}
pub trait IntoIteratorExt<I: IntoIterator> {
fn into_into_lender(self) -> FromIntoIter<I>;
}
impl<I: IntoIterator> IntoIteratorExt<I> for I {
#[inline(always)]
fn into_into_lender(self) -> FromIntoIter<I> {
crate::from_into_iter(self)
}
}
pub trait FallibleIteratorExt<I: FallibleIterator> {
fn into_fallible_lender(self) -> FromFallibleIter<I>;
}
impl<I: FallibleIterator> FallibleIteratorExt<I> for I {
#[inline(always)]
fn into_fallible_lender(self) -> FromFallibleIter<I> {
crate::from_fallible_iter(self)
}
}
pub trait IntoFallibleIteratorExt<I: IntoFallibleIterator> {
fn into_into_fallible_lender(self) -> FromIntoFallibleIter<I>;
}
impl<I: IntoFallibleIterator> IntoFallibleIteratorExt<I> for I {
#[inline(always)]
fn into_into_fallible_lender(self) -> FromIntoFallibleIter<I> {
crate::from_into_fallible_iter(self)
}
}
pub trait IteratorRefExt<I: Iterator> {
fn into_ref_lender(self) -> FromIterRef<I>;
}
impl<I: Iterator> IteratorRefExt<I> for I {
#[inline(always)]
fn into_ref_lender(self) -> FromIterRef<I> {
crate::from_iter_ref(self)
}
}
pub trait FallibleIteratorRefExt<I: FallibleIterator> {
fn into_fallible_ref_lender(self) -> FromFallibleIterRef<I>;
}
impl<I: FallibleIterator> FallibleIteratorRefExt<I> for I {
#[inline(always)]
fn into_fallible_ref_lender(self) -> FromFallibleIterRef<I> {
crate::from_fallible_iter_ref(self)
}
}