Add optional container

This commit is contained in:
Sasha Koshka 2024-09-10 16:47:20 -04:00
parent fc1af9f4a1
commit 1547391126

31
container/optional.go Normal file
View File

@ -0,0 +1,31 @@
package ucontainer
// Optional is an optional value.
type Optional[T any] struct {
value T
exists bool
}
// Value returns the value and true if the value exists. If not, it returns the
// last set value and false.
func (this *Optional[T]) Value () (T, bool) {
return this.value, this.exists
}
// Set sets the value.
func (this *Optional[T]) Set (value T) {
this.value = value
this.exists = true
}
// Unset unsets the value.
func (this *Optional[T]) Unset () {
var zero T
this.value = zero
this.exists = false
}
// Exists returns if the value is currently set.
func (this *Optional[T]) Exists () bool {
return this.exists
}