package option type Option[T any] struct { v T valid bool } func Some[T any](v T) Option[T] { return Option[T]{ v: v, valid: true, } } func None[T any]() Option[T] { return Option[T]{} } func (o Option[T]) IsSome() bool { return o.valid } func (o Option[T]) IsNone() bool { return !o.valid } func (o Option[T]) Take() T { return o.v }