initial version
This commit is contained in:
29
option.go
Normal file
29
option.go
Normal file
@@ -0,0 +1,29 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user