From: Brendan Hansen Date: Mon, 27 Feb 2023 00:16:44 +0000 (-0600) Subject: added: `or_return` to Optional X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=7fbde4b4ea2d7d7a1c1a179b8cd7ae03b5b7a57a;p=onyx.git added: `or_return` to Optional --- diff --git a/core/container/optional.onyx b/core/container/optional.onyx index 33aafefb..e486e911 100644 --- a/core/container/optional.onyx +++ b/core/container/optional.onyx @@ -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);