add unwrap_or to TryFutureExtExt

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2024-10-03 08:04:16 +00:00 committed by strawberry
parent 4485f36e34
commit dd9f53080a

View file

@ -1,6 +1,9 @@
//! Extended external extensions to futures::TryFutureExt //! Extended external extensions to futures::TryFutureExt
use futures::{future::MapOkOrElse, TryFuture, TryFutureExt}; use futures::{
future::{MapOkOrElse, UnwrapOrElse},
TryFuture, TryFutureExt,
};
/// This interface is not necessarily complete; feel free to add as-needed. /// This interface is not necessarily complete; feel free to add as-needed.
pub trait TryExtExt<T, E> pub trait TryExtExt<T, E>
@ -19,6 +22,10 @@ where
) -> MapOkOrElse<Self, impl FnOnce(Self::Ok) -> Option<Self::Ok>, impl FnOnce(Self::Error) -> Option<Self::Ok>> ) -> MapOkOrElse<Self, impl FnOnce(Self::Ok) -> Option<Self::Ok>, impl FnOnce(Self::Error) -> Option<Self::Ok>>
where where
Self: Sized; Self: Sized;
fn unwrap_or(self, default: Self::Ok) -> UnwrapOrElse<Self, impl FnOnce(Self::Error) -> Self::Ok>
where
Self: Sized;
} }
impl<T, E, Fut> TryExtExt<T, E> for Fut impl<T, E, Fut> TryExtExt<T, E> for Fut
@ -45,4 +52,12 @@ where
{ {
self.map_ok_or(None, Some) self.map_ok_or(None, Some)
} }
#[inline]
fn unwrap_or(self, default: Self::Ok) -> UnwrapOrElse<Self, impl FnOnce(Self::Error) -> Self::Ok>
where
Self: Sized,
{
self.unwrap_or_else(move |_| default)
}
} }