add ready_try_fold to utils
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
79c6b51860
commit
27966221f1
3 changed files with 52 additions and 1 deletions
|
@ -11,6 +11,7 @@ where
|
|||
{
|
||||
fn log_err(self, level: Level) -> Self;
|
||||
|
||||
#[inline]
|
||||
fn err_log(self) -> Self
|
||||
where
|
||||
Self: Sized,
|
||||
|
@ -25,6 +26,7 @@ where
|
|||
{
|
||||
fn log_err_debug(self, level: Level) -> Self;
|
||||
|
||||
#[inline]
|
||||
fn err_debug_log(self) -> Self
|
||||
where
|
||||
Self: Sized,
|
||||
|
|
|
@ -32,6 +32,11 @@ where
|
|||
where
|
||||
F: Fn(T, Item) -> T;
|
||||
|
||||
fn ready_fold_default<T, F>(self, f: F) -> Fold<Self, Ready<T>, T, impl FnMut(T, Item) -> Ready<T>>
|
||||
where
|
||||
F: Fn(T, Item) -> T,
|
||||
T: Default;
|
||||
|
||||
fn ready_for_each<F>(self, f: F) -> ForEach<Self, Ready<()>, impl FnMut(Item) -> Ready<()>>
|
||||
where
|
||||
F: FnMut(Item);
|
||||
|
@ -93,6 +98,15 @@ where
|
|||
self.fold(init, move |a, t| ready(f(a, t)))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn ready_fold_default<T, F>(self, f: F) -> Fold<Self, Ready<T>, T, impl FnMut(T, Item) -> Ready<T>>
|
||||
where
|
||||
F: Fn(T, Item) -> T,
|
||||
T: Default,
|
||||
{
|
||||
self.ready_fold(T::default(), f)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[allow(clippy::unit_arg)]
|
||||
fn ready_for_each<F>(self, mut f: F) -> ForEach<Self, Ready<()>, impl FnMut(Item) -> Ready<()>>
|
||||
|
@ -120,6 +134,7 @@ where
|
|||
self.scan(init, move |s, t| ready(f(s, t)))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn ready_scan_each<T, F>(
|
||||
self, init: T, f: F,
|
||||
) -> Scan<Self, T, Ready<Option<Item>>, impl FnMut(&mut T, Item) -> Ready<Option<Item>>>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
use futures::{
|
||||
future::{ready, Ready},
|
||||
stream::{AndThen, TryForEach, TryStream, TryStreamExt},
|
||||
stream::{AndThen, TryFold, TryForEach, TryStream, TryStreamExt},
|
||||
};
|
||||
|
||||
use crate::Result;
|
||||
|
@ -25,6 +25,19 @@ where
|
|||
) -> TryForEach<Self, Ready<Result<(), E>>, impl FnMut(S::Ok) -> Ready<Result<(), E>>>
|
||||
where
|
||||
F: FnMut(S::Ok) -> Result<(), E>;
|
||||
|
||||
fn ready_try_fold<U, F>(
|
||||
self, init: U, f: F,
|
||||
) -> TryFold<Self, Ready<Result<U, E>>, U, impl FnMut(U, S::Ok) -> Ready<Result<U, E>>>
|
||||
where
|
||||
F: Fn(U, S::Ok) -> Result<U, E>;
|
||||
|
||||
fn ready_try_fold_default<U, F>(
|
||||
self, f: F,
|
||||
) -> TryFold<Self, Ready<Result<U, E>>, U, impl FnMut(U, S::Ok) -> Ready<Result<U, E>>>
|
||||
where
|
||||
F: Fn(U, S::Ok) -> Result<U, E>,
|
||||
U: Default;
|
||||
}
|
||||
|
||||
impl<T, E, S> TryReadyExt<T, E, S> for S
|
||||
|
@ -49,4 +62,25 @@ where
|
|||
{
|
||||
self.try_for_each(move |t| ready(f(t)))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn ready_try_fold<U, F>(
|
||||
self, init: U, f: F,
|
||||
) -> TryFold<Self, Ready<Result<U, E>>, U, impl FnMut(U, S::Ok) -> Ready<Result<U, E>>>
|
||||
where
|
||||
F: Fn(U, S::Ok) -> Result<U, E>,
|
||||
{
|
||||
self.try_fold(init, move |a, t| ready(f(a, t)))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn ready_try_fold_default<U, F>(
|
||||
self, f: F,
|
||||
) -> TryFold<Self, Ready<Result<U, E>>, U, impl FnMut(U, S::Ok) -> Ready<Result<U, E>>>
|
||||
where
|
||||
F: Fn(U, S::Ok) -> Result<U, E>,
|
||||
U: Default,
|
||||
{
|
||||
self.ready_try_fold(U::default(), f)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue