From c49d038540f8eb36bf727aa27cd64e77118ef8df Mon Sep 17 00:00:00 2001 From: ffranr Date: Fri, 25 Oct 2024 16:29:16 +0100 Subject: [PATCH] fn: add OptionFromPtr function Add a function `OptionFromPtr` that constructs an `Option` from a pointer. The function signature is: `OptionFromPtr : *A -> Option[A]`. This utility has proven useful in the taproot-assets project. --- fn/option.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/fn/option.go b/fn/option.go index 797f3a0ff..60e64cf3c 100644 --- a/fn/option.go +++ b/fn/option.go @@ -26,6 +26,17 @@ func None[A any]() Option[A] { return Option[A]{} } +// OptionFromPtr constructs an option from a pointer. +// +// OptionFromPtr : *A -> Option[A]. +func OptionFromPtr[A any](a *A) Option[A] { + if a == nil { + return None[A]() + } + + return Some[A](*a) +} + // ElimOption is the universal Option eliminator. It can be used to safely // handle all possible values inside the Option by supplying two continuations. //