pub trait LendingIteratorDyn {
type Item: ?Sized + HKT;
// Required method
fn dyn_next(&mut self) -> Option<Feed<'_, Self::Item>>;
}Expand description
dyn-friendly (dyn-safe) version of LendingIterator.
It is automagically implemented for all types implementing
LendingIterator, and, conversely, LendingIterator is implemented for
dyn LendingIteratorDyn.
§Limitations
Beware that such a trait does still not play well with contexts which are generic over the “lending mode” ⚠️
So, if you intend to unify two heterogeneous LendingIterator under the
same dyn LendingIteratorDyn, make sure to hard-code the
dependency on the 'next-lending lifetime.
Otherwise you might have to:
- involve
CanonicalHKTin your signatures, - and use
.dyn_boxed_auto()rather than the.dyn_boxed()direct shorthand.
§Example: dyn coercion of a fully generic LendingIterator:
-
use ::lending_iterator::prelude::*; fn coercions<'T, Item, T> (it: T) where Item : HKT, T : 'T + Send + Sync + LendingIterator, // THIS IS THE BOUND THAT YOU HAVE TO ADD TO MAKE IT WORK, for some reason: T : LendingIteratorDyn<Item = CanonicalHKT<Item>>, // 👈 { match () { _ => { let _: Box<dyn 'T + LendingIteratorDyn<Item = CanonicalHKT<Item>>> = it.dyn_boxed_auto() ; }, _ => { let _: Box<dyn 'T + LendingIteratorDyn<Item = CanonicalHKT<Item>> + Send> = it.dyn_boxed_auto() ; }, _ => { let _: Box<dyn 'T + LendingIteratorDyn<Item = CanonicalHKT<Item>> + Sync> = it.dyn_boxed_auto() ; }, _ => { let _: Box<dyn 'T + LendingIteratorDyn<Item = CanonicalHKT<Item>> + Send + Sync> = it.dyn_boxed_auto() ; }, } }
Required Associated Types§
Required Methods§
Sourcefn dyn_next(&mut self) -> Option<Feed<'_, Self::Item>>
fn dyn_next(&mut self) -> Option<Feed<'_, Self::Item>>
A dyn-safe version of LendingIterator::next(), using
[Self::Item].
Given that LendingIteratorDyn : LendingIterator, you
should not need to call this function directly: calling .next() ought
to work just as well.
- That being said, if defining a
LendingIteratorDynsubtrait, you may then need to directly call into it.
Trait Implementations§
Source§impl<'next, 'usability, Item: HKT> LendingIteratorඞItem<'next> for dyn LendingIteratorDyn<Item = Item> + 'usability
impl<'next, 'usability, Item: HKT> LendingIteratorඞItem<'next> for dyn LendingIteratorDyn<Item = Item> + 'usability
Source§impl<'next, 'usability, Item: HKT> LendingIteratorඞItem<'next> for dyn LendingIteratorDyn<Item = Item> + Send + 'usability
impl<'next, 'usability, Item: HKT> LendingIteratorඞItem<'next> for dyn LendingIteratorDyn<Item = Item> + Send + 'usability
Source§impl<'next, 'usability, Item: HKT> LendingIteratorඞItem<'next> for dyn LendingIteratorDyn<Item = Item> + Send + Sync + 'usability
impl<'next, 'usability, Item: HKT> LendingIteratorඞItem<'next> for dyn LendingIteratorDyn<Item = Item> + Send + Sync + 'usability
Source§impl<'next, 'usability, Item: HKT> LendingIteratorඞItem<'next> for dyn LendingIteratorDyn<Item = Item> + Sync + 'usability
impl<'next, 'usability, Item: HKT> LendingIteratorඞItem<'next> for dyn LendingIteratorDyn<Item = Item> + Sync + 'usability
Source§impl<'usability, Item: HKT> LendingIterator for dyn LendingIteratorDyn<Item = Item> + 'usability
dyn LendingIteratorDyn + … : LendingIterator
impl<'usability, Item: HKT> LendingIterator for dyn LendingIteratorDyn<Item = Item> + 'usability
dyn LendingIteratorDyn + … : LendingIterator
Source§fn next<'next>(
self: &'next mut (dyn LendingIteratorDyn<Item = Item> + 'usability),
) -> Option<Feed<'next, Item>>
fn next<'next>( self: &'next mut (dyn LendingIteratorDyn<Item = Item> + 'usability), ) -> Option<Feed<'next, Item>>
Source§fn try_for_each<Err>(
&mut self,
f: impl FnMut(Item<'_, Self>) -> Result<(), Err>,
) -> Result<(), Err>
fn try_for_each<Err>( &mut self, f: impl FnMut(Item<'_, Self>) -> Result<(), Err>, ) -> Result<(), Err>
LendingIterator counterpart of Iterator::try_for_each().Source§fn try_fold<Acc, Err>(
&mut self,
acc: Acc,
f: impl FnMut(Acc, Item<'_, Self>) -> Result<Acc, Err>,
) -> Result<Acc, Err>
fn try_fold<Acc, Err>( &mut self, acc: Acc, f: impl FnMut(Acc, Item<'_, Self>) -> Result<Acc, Err>, ) -> Result<Acc, Err>
LendingIterator counterpart of Iterator::try_fold().Source§fn nth(&mut self, n: usize) -> Option<Item<'_, Self>>
fn nth(&mut self, n: usize) -> Option<Item<'_, Self>>
LendingIterator counterpart of Iterator::nth().Source§impl<'usability, Item: HKT> LendingIterator for dyn LendingIteratorDyn<Item = Item> + Send + 'usability
dyn LendingIteratorDyn + … : LendingIterator
impl<'usability, Item: HKT> LendingIterator for dyn LendingIteratorDyn<Item = Item> + Send + 'usability
dyn LendingIteratorDyn + … : LendingIterator
Source§fn next<'next>(
self: &'next mut (dyn LendingIteratorDyn<Item = Item> + Send + 'usability),
) -> Option<Feed<'next, Item>>
fn next<'next>( self: &'next mut (dyn LendingIteratorDyn<Item = Item> + Send + 'usability), ) -> Option<Feed<'next, Item>>
Source§fn try_for_each<Err>(
&mut self,
f: impl FnMut(Item<'_, Self>) -> Result<(), Err>,
) -> Result<(), Err>
fn try_for_each<Err>( &mut self, f: impl FnMut(Item<'_, Self>) -> Result<(), Err>, ) -> Result<(), Err>
LendingIterator counterpart of Iterator::try_for_each().Source§fn try_fold<Acc, Err>(
&mut self,
acc: Acc,
f: impl FnMut(Acc, Item<'_, Self>) -> Result<Acc, Err>,
) -> Result<Acc, Err>
fn try_fold<Acc, Err>( &mut self, acc: Acc, f: impl FnMut(Acc, Item<'_, Self>) -> Result<Acc, Err>, ) -> Result<Acc, Err>
LendingIterator counterpart of Iterator::try_fold().Source§fn nth(&mut self, n: usize) -> Option<Item<'_, Self>>
fn nth(&mut self, n: usize) -> Option<Item<'_, Self>>
LendingIterator counterpart of Iterator::nth().Source§impl<'usability, Item: HKT> LendingIterator for dyn LendingIteratorDyn<Item = Item> + Send + Sync + 'usability
dyn LendingIteratorDyn + … : LendingIterator
impl<'usability, Item: HKT> LendingIterator for dyn LendingIteratorDyn<Item = Item> + Send + Sync + 'usability
dyn LendingIteratorDyn + … : LendingIterator
Source§fn next<'next>(
self: &'next mut (dyn LendingIteratorDyn<Item = Item> + Send + Sync + 'usability),
) -> Option<Feed<'next, Item>>
fn next<'next>( self: &'next mut (dyn LendingIteratorDyn<Item = Item> + Send + Sync + 'usability), ) -> Option<Feed<'next, Item>>
Source§fn try_for_each<Err>(
&mut self,
f: impl FnMut(Item<'_, Self>) -> Result<(), Err>,
) -> Result<(), Err>
fn try_for_each<Err>( &mut self, f: impl FnMut(Item<'_, Self>) -> Result<(), Err>, ) -> Result<(), Err>
LendingIterator counterpart of Iterator::try_for_each().Source§fn try_fold<Acc, Err>(
&mut self,
acc: Acc,
f: impl FnMut(Acc, Item<'_, Self>) -> Result<Acc, Err>,
) -> Result<Acc, Err>
fn try_fold<Acc, Err>( &mut self, acc: Acc, f: impl FnMut(Acc, Item<'_, Self>) -> Result<Acc, Err>, ) -> Result<Acc, Err>
LendingIterator counterpart of Iterator::try_fold().Source§fn nth(&mut self, n: usize) -> Option<Item<'_, Self>>
fn nth(&mut self, n: usize) -> Option<Item<'_, Self>>
LendingIterator counterpart of Iterator::nth().Source§impl<'usability, Item: HKT> LendingIterator for dyn LendingIteratorDyn<Item = Item> + Sync + 'usability
dyn LendingIteratorDyn + … : LendingIterator
impl<'usability, Item: HKT> LendingIterator for dyn LendingIteratorDyn<Item = Item> + Sync + 'usability
dyn LendingIteratorDyn + … : LendingIterator
Source§fn next<'next>(
self: &'next mut (dyn LendingIteratorDyn<Item = Item> + Sync + 'usability),
) -> Option<Feed<'next, Item>>
fn next<'next>( self: &'next mut (dyn LendingIteratorDyn<Item = Item> + Sync + 'usability), ) -> Option<Feed<'next, Item>>
Source§fn try_for_each<Err>(
&mut self,
f: impl FnMut(Item<'_, Self>) -> Result<(), Err>,
) -> Result<(), Err>
fn try_for_each<Err>( &mut self, f: impl FnMut(Item<'_, Self>) -> Result<(), Err>, ) -> Result<(), Err>
LendingIterator counterpart of Iterator::try_for_each().Source§fn try_fold<Acc, Err>(
&mut self,
acc: Acc,
f: impl FnMut(Acc, Item<'_, Self>) -> Result<Acc, Err>,
) -> Result<Acc, Err>
fn try_fold<Acc, Err>( &mut self, acc: Acc, f: impl FnMut(Acc, Item<'_, Self>) -> Result<Acc, Err>, ) -> Result<Acc, Err>
LendingIterator counterpart of Iterator::try_fold().Source§fn nth(&mut self, n: usize) -> Option<Item<'_, Self>>
fn nth(&mut self, n: usize) -> Option<Item<'_, Self>>
LendingIterator counterpart of Iterator::nth().Implementors§
Source§impl<T: LendingIterator> LendingIteratorDyn for T
impl LendingIterator : LendingIteratorDyn
impl<T: LendingIterator> LendingIteratorDyn for T
impl LendingIterator : LendingIteratorDyn