pub struct FromFn<Item, State, Next>{
pub state: State,
pub next: Next,
pub _phantom: PhantomData<fn(_: &mut State) -> Option<Feed<'_, Item>>>,
}
Expand description
The impl LendingIterator
returned by from_fn()
.
§Example
-
use ::lending_iterator::prelude::*; struct Person { name: String, age: u8, } fn example (person: &mut Person) -> impl '_ + LendingIterator /* or: -> impl '_ + LendingIteratorDyn<Item = HKT!(&str)> */ { lending_iterator::FromFn::<HKT!(&str), _, _> { state: person, next: |p| if p.age > 0 { Some(&p.name) } else { None }, _phantom: <_>::default(), } }
Fields§
§state: State
The state owned by this LendingIterator
.
-
Think of
Self
within a manual implementation of the trait; -
Think of
repeat_mut()
.
next: Next
The “fn next()
” of a “manual implementation of the trait”.
Trick: since it’s only required to be a closure, this Next
closure
can capture state on its own, provided it does not need to lend from it.
This can lead to slightly more lightweight FromFn
/ from_fn
calls:
- put the lent / borrowed state inside
.state
, - let the rest of the state be implicitly
move
-captured by this closure.
_phantom: PhantomData<fn(_: &mut State) -> Option<Feed<'_, Item>>>
The signature of fn next
in a PhantomData
.
Trait Implementations§
Source§impl<'next, Item, State, Next> LendingIteratorඞItem<'next> for FromFn<Item, State, Next>
impl<'next, Item, State, Next> LendingIteratorඞItem<'next> for FromFn<Item, State, Next>
Source§impl<Item, State, Next> LendingIterator for FromFn<Item, State, Next>
impl<Item, State, Next> LendingIterator for FromFn<Item, State, Next>
Source§fn filter<F>(self, should_yield: F) -> Filter<Self, F> ⓘ
fn filter<F>(self, should_yield: F) -> Filter<Self, F> ⓘ
LendingIterator
counterpart of Iterator::filter()
.Source§fn for_each(self, f: impl FnMut(Item<'_, Self>))where
Self: Sized,
fn for_each(self, f: impl FnMut(Item<'_, Self>))where
Self: Sized,
LendingIterator
counterpart of Iterator::for_each()
.Source§fn fold<Acc>(self, acc: Acc, f: impl FnMut(Acc, Item<'_, Self>) -> Acc) -> Accwhere
Self: Sized,
fn fold<Acc>(self, acc: Acc, f: impl FnMut(Acc, Item<'_, Self>) -> Acc) -> Accwhere
Self: Sized,
LendingIterator
counterpart of Iterator::fold()
.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 all(&mut self, predicate: impl FnMut(Item<'_, Self>) -> bool) -> boolwhere
Self: Sized,
fn all(&mut self, predicate: impl FnMut(Item<'_, Self>) -> bool) -> boolwhere
Self: Sized,
LendingIterator
counterpart of Iterator::all()
.Source§fn any(&mut self, predicate: impl FnMut(Item<'_, Self>) -> bool) -> boolwhere
Self: Sized,
fn any(&mut self, predicate: impl FnMut(Item<'_, Self>) -> bool) -> boolwhere
Self: Sized,
LendingIterator
counterpart of Iterator::any()
.Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
LendingIterator
counterpart of Iterator::by_ref()
.Source§fn count(self) -> usizewhere
Self: Sized,
fn count(self) -> usizewhere
Self: Sized,
LendingIterator
counterpart of Iterator::count()
.Source§fn find<'find>(
&'find mut self,
predicate: impl 'find + FnMut(&Item<'_, Self>) -> bool,
) -> Option<Item<'find, Self>>where
Self: Sized,
fn find<'find>(
&'find mut self,
predicate: impl 'find + FnMut(&Item<'_, Self>) -> bool,
) -> Option<Item<'find, Self>>where
Self: Sized,
LendingIterator
counterpart of Iterator::find()
.Source§fn fuse(self) -> Fuse<Self> ⓘwhere
Self: Sized,
fn fuse(self) -> Fuse<Self> ⓘwhere
Self: Sized,
LendingIterator
counterpart of Iterator::fuse()
.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§fn position<F>(
&mut self,
predicate: impl FnMut(Item<'_, Self>) -> bool,
) -> Option<usize>where
Self: Sized,
fn position<F>(
&mut self,
predicate: impl FnMut(Item<'_, Self>) -> bool,
) -> Option<usize>where
Self: Sized,
LendingIterator
counterpart of Iterator::position()
.Source§fn skip(self, count: usize) -> Skip<Self> ⓘwhere
Self: Sized,
fn skip(self, count: usize) -> Skip<Self> ⓘwhere
Self: Sized,
LendingIterator
counterpart of Iterator::skip()
.Source§fn take(self, count: usize) -> Take<Self> ⓘwhere
Self: Sized,
fn take(self, count: usize) -> Take<Self> ⓘwhere
Self: Sized,
LendingIterator
counterpart of Iterator::take()
.Source§fn map_into_iter<F, NonLendingItem>(self, f: F) -> MapIntoIter<Self, F> ⓘ
fn map_into_iter<F, NonLendingItem>(self, f: F) -> MapIntoIter<Self, F> ⓘ
Convenience shorthand for
.map…(…).into_iter()
. Read moreSource§fn filter_map_to_ref<R: ?Sized, F>(self, f: F) -> FilterMap<Self, F, HKTRef<R>> ⓘ
fn filter_map_to_ref<R: ?Sized, F>(self, f: F) -> FilterMap<Self, F, HKTRef<R>> ⓘ
Convenience method: same as
.filter_map()
, but for hard-coding the
HKT
parameter to HKTRef<R> = HKT!(&R)
. Read moreSource§fn filter_map_to_mut<R: ?Sized, F>(
self,
f: F,
) -> FilterMap<Self, F, HKTRefMut<R>> ⓘ
fn filter_map_to_mut<R: ?Sized, F>( self, f: F, ) -> FilterMap<Self, F, HKTRefMut<R>> ⓘ
Convenience method: same as
.filter_map()
, but for hard-coding the
HKT
parameter to HKTRefMut<R> = HKT!(&mut R)
. Read moreSource§fn filter_map_into_iter<F, NonLendingItem>(
self,
f: F,
) -> FilterMapIntoIter<Self, F> ⓘ
fn filter_map_into_iter<F, NonLendingItem>( self, f: F, ) -> FilterMapIntoIter<Self, F> ⓘ
Convenience shorthand for
.filter_map…(…).into_iter()
. Read moreSource§fn into_iter<Item>(self) -> IntoIter<Self> ⓘwhere
Self: for<'any> LendingIteratorඞItem<'any, T = Item> + Sized,
fn into_iter<Item>(self) -> IntoIter<Self> ⓘwhere
Self: for<'any> LendingIteratorඞItem<'any, T = Item> + Sized,
Source§fn dyn_boxed<'usability>(
self,
) -> Box<dyn LendingIteratorDyn<Item = HKTItem<Self>> + 'usability>where
Self: 'usability + Sized,
fn dyn_boxed<'usability>(
self,
) -> Box<dyn LendingIteratorDyn<Item = HKTItem<Self>> + 'usability>where
Self: 'usability + Sized,
Available on crate feature
alloc
only.Source§fn dyn_boxed_auto<BoxedDynLendingIterator, Item: HKT>(
self,
) -> BoxedDynLendingIteratorwhere
Self: Sized + DynCoerce<BoxedDynLendingIterator, Item>,
fn dyn_boxed_auto<BoxedDynLendingIterator, Item: HKT>(
self,
) -> BoxedDynLendingIteratorwhere
Self: Sized + DynCoerce<BoxedDynLendingIterator, Item>,
Available on crate feature
alloc
only.Auto Trait Implementations§
impl<Item, State, Next> Freeze for FromFn<Item, State, Next>
impl<Item, State, Next> RefUnwindSafe for FromFn<Item, State, Next>where
State: RefUnwindSafe,
Next: RefUnwindSafe,
impl<Item, State, Next> Send for FromFn<Item, State, Next>
impl<Item, State, Next> Sync for FromFn<Item, State, Next>
impl<Item, State, Next> Unpin for FromFn<Item, State, Next>
impl<Item, State, Next> UnwindSafe for FromFn<Item, State, Next>where
State: UnwindSafe,
Next: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more