From dd9f53080acb354905a610dc235c8720c72d742c Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Thu, 3 Oct 2024 08:04:16 +0000 Subject: [PATCH] add unwrap_or to TryFutureExtExt Signed-off-by: Jason Volk --- src/core/utils/future/try_ext_ext.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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) + } }