From 749f29aaaba1ca117c3cd8a5bb4ebb3a031bd84f Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sun, 22 Dec 2024 07:03:32 +0000 Subject: [PATCH] add and/and_then to BoolExt Signed-off-by: Jason Volk --- src/core/utils/bool.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/core/utils/bool.rs b/src/core/utils/bool.rs index b4192daf..b16f63e9 100644 --- a/src/core/utils/bool.rs +++ b/src/core/utils/bool.rs @@ -2,6 +2,10 @@ /// Boolean extensions and chain.starters pub trait BoolExt { + fn and(self, t: Option) -> Option; + + fn and_then Option>(self, f: F) -> Option; + #[must_use] fn clone_or(self, err: T, t: &T) -> T; @@ -39,6 +43,12 @@ pub trait BoolExt { } impl BoolExt for bool { + #[inline] + fn and(self, t: Option) -> Option { self.then_some(t).flatten() } + + #[inline] + fn and_then Option>(self, f: F) -> Option { self.then(f).flatten() } + #[inline] fn clone_or(self, err: T, t: &T) -> T { self.map_or(err, || t.clone()) }