Add ready_try_skip_while() to stream utils.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-07-07 00:37:44 +00:00
parent ca8f3ae057
commit fd0082fd2c

View File

@@ -3,7 +3,10 @@
use futures::{
future::{Ready, ready},
stream::{AndThen, TryFilterMap, TryFold, TryForEach, TryStream, TryStreamExt, TryTakeWhile},
stream::{
AndThen, TryFilterMap, TryFold, TryForEach, TrySkipWhile, TryStream, TryStreamExt,
TryTakeWhile,
},
};
use crate::Result;
@@ -57,6 +60,13 @@ where
where
F: FnMut(S::Ok) -> Result<(), E>;
fn ready_try_skip_while<F>(
self,
f: F,
) -> TrySkipWhile<Self, Ready<Result<bool, E>>, impl FnMut(&S::Ok) -> Ready<Result<bool, E>>>
where
F: Fn(&S::Ok) -> Result<bool, E>;
fn ready_try_take_while<F>(
self,
f: F,
@@ -130,6 +140,17 @@ where
self.try_for_each(move |t| ready(f(t)))
}
#[inline]
fn ready_try_skip_while<F>(
self,
f: F,
) -> TrySkipWhile<Self, Ready<Result<bool, E>>, impl FnMut(&S::Ok) -> Ready<Result<bool, E>>>
where
F: Fn(&S::Ok) -> Result<bool, E>,
{
self.try_skip_while(move |t| ready(f(t)))
}
#[inline]
fn ready_try_take_while<F>(
self,