31 lines
690 B
Go
31 lines
690 B
Go
package hopp
|
|
|
|
import "git.tebibyte.media/sashakoshka/go-util/container"
|
|
|
|
// Option allows an optional value to be defined without using a pointer.
|
|
// TODO make generic alias once go 1.24 releases
|
|
type Option[T any] ucontainer.Optional[T]
|
|
|
|
func O[T any](value T) Option[T] {
|
|
return Option[T](ucontainer.O(value))
|
|
}
|
|
|
|
func Void[T any]() Option[T] {
|
|
return Option[T](ucontainer.Void[T]())
|
|
}
|
|
|
|
func (option Option[T]) Ok() bool {
|
|
return (ucontainer.Optional[T])(option).Exists()
|
|
}
|
|
|
|
func (option Option[T]) Get() (T, bool) {
|
|
return (ucontainer.Optional[T])(option).Value()
|
|
}
|
|
|
|
func (option Option[T]) Default(defaul T) T {
|
|
if value, ok := option.Get(); ok {
|
|
return value
|
|
}
|
|
return defaul
|
|
}
|