added: `or_return` to Optional
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 27 Feb 2023 00:16:44 +0000 (18:16 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 27 Feb 2023 00:16:44 +0000 (18:16 -0600)
core/container/optional.onyx

index 33aafefb2f0a0ca64aeae2a7509d7ba28281d3e6..e486e911679c957f92847435eb6ee33feb7fcb03 100644 (file)
@@ -83,6 +83,13 @@ Optional :: struct (Value_Type: type_expr) {
         return generate();
     }
 
+    or_return :: macro (o: Optional($T)) -> T {
+        value := o;
+        if value.has_value do return value.value;
+
+        return #from_enclosing .{};
+    }
+
     hash :: (o: Optional($T/core.hash.Hashable)) -> u32 {
         if !o.has_value do return 0;
         return core.hash.to_u32(o.value);