Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/test-utils/src/minicore.rs')
-rw-r--r--crates/test-utils/src/minicore.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/crates/test-utils/src/minicore.rs b/crates/test-utils/src/minicore.rs
index 8975fa56d7..8439573980 100644
--- a/crates/test-utils/src/minicore.rs
+++ b/crates/test-utils/src/minicore.rs
@@ -1713,6 +1713,43 @@ pub mod result {
#[lang = "Err"]
Err(E),
}
+ impl<T, E> Result<T, E> {
+ pub const fn or<F>(self, res: Result<T, F>) -> Result<T, F> {
+ match self {
+ Ok(v) => Ok(v),
+ Err(_) => res,
+ }
+ }
+
+ pub const fn unwrap_or(self, default: T) -> T {
+ match self {
+ Ok(t) => t,
+ Err(_) => default,
+ }
+ }
+
+ // region:fn
+ pub const fn or_else<F, O>(self, op: O) -> Result<T, F>
+ where
+ O: FnOnce(E) -> Result<T, F>,
+ {
+ match self {
+ Ok(t) => Ok(t),
+ Err(e) => op(e),
+ }
+ }
+
+ pub const fn unwrap_or_else<F>(self, op: F) -> T
+ where
+ F: FnOnce(E) -> T,
+ {
+ match self {
+ Ok(t) => t,
+ Err(e) => op(e),
+ }
+ }
+ // endregion:fn
+ }
}
// endregion:result