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. //