diff --git a/src/core/utils/future/try_ext_ext.rs b/src/core/utils/future/try_ext_ext.rs index e444ad94..d30d2cac 100644 --- a/src/core/utils/future/try_ext_ext.rs +++ b/src/core/utils/future/try_ext_ext.rs @@ -1,6 +1,9 @@ //! 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. pub trait TryExtExt @@ -19,6 +22,10 @@ where ) -> MapOkOrElse Option, impl FnOnce(Self::Error) -> Option> where Self: Sized; + + fn unwrap_or(self, default: Self::Ok) -> UnwrapOrElse Self::Ok> + where + Self: Sized; } impl TryExtExt for Fut @@ -45,4 +52,12 @@ where { self.map_ok_or(None, Some) } + + #[inline] + fn unwrap_or(self, default: Self::Ok) -> UnwrapOrElse Self::Ok> + where + Self: Sized, + { + self.unwrap_or_else(move |_| default) + } }