Documentation
¶
Index ¶
- type Elastic
- func FromElastic[T any](e elastic.Elastic[T]) Elastic[T]
- func FromOptions[T any, Opts ~[]option.Option[T]](options Opts) Elastic[T]
- func FromPointer[T any](t *T) Elastic[T]
- func FromPointers[T any](ps []*T) Elastic[T]
- func FromUnd[T any](u sliceund.Und[option.Options[T]]) Elastic[T]
- func FromValue[T any](t T) Elastic[T]
- func FromValues[T any](ts []T) Elastic[T]
- func Null[T any]() Elastic[T]
- func Undefined[T any]() Elastic[T]
- func (e Elastic[T]) CheckUnd() error
- func (e Elastic[T]) Clone() Elastic[T]
- func (e Elastic[T]) Elastic() elastic.Elastic[T]
- func (e Elastic[T]) Equal(other Elastic[T]) bool
- func (e Elastic[T]) EqualFunc(other Elastic[T], cmp func(i, j T) bool) bool
- func (e Elastic[T]) HasNull() bool
- func (e Elastic[T]) IsDefined() bool
- func (e Elastic[T]) IsNull() bool
- func (e Elastic[T]) IsUndefined() bool
- func (e Elastic[T]) IsZero() bool
- func (e Elastic[T]) Iter() iter.Seq[option.Option[option.Options[T]]]
- func (e Elastic[T]) Len() int
- func (e Elastic[T]) LogValue() slog.Value
- func (e Elastic[T]) Map(f func(sliceund.Und[option.Options[T]]) sliceund.Und[option.Options[T]]) Elastic[T]
- func (u Elastic[T]) MarshalJSON() ([]byte, error)
- func (e Elastic[T]) MarshalJSONV2(enc *jsontext.Encoder, opts jsonv2.Options) error
- func (e Elastic[T]) MarshalXML(enc *xml.Encoder, start xml.StartElement) error
- func (e Elastic[T]) PlainMultiple() []*Tdeprecated
- func (e Elastic[T]) PlainSingle() *Tdeprecated
- func (e Elastic[T]) Pointer() *T
- func (e Elastic[T]) Pointers() []*T
- func (e *Elastic[T]) UnmarshalJSON(data []byte) error
- func (e *Elastic[T]) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
- func (e Elastic[T]) Unwrap() sliceund.Und[option.Options[T]]
- func (e Elastic[T]) ValidateUnd() error
- func (e Elastic[T]) Value() T
- func (e Elastic[T]) ValueMultiple() []Tdeprecated
- func (e Elastic[T]) ValueSingle() Tdeprecated
- func (e Elastic[T]) Values() []T
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Elastic ¶
Elastic[T] is a type that can express undefined | null | T | [](null | T). Elastic[T] implements json.Unmarshaler so that it can be unmarshaled from all of those type. However it always marshaled into an array of JSON value that corresponds to T.
Elastic[T] can be a omittable struct field with omitempty option of `encoding/json`.
Although it exposes its internal data structure, you should not mutate internal data. For more detail, See doc comment for github.com/ngicks/und/sliceund.Und[T].
func FromElastic ¶
FromElastic create a new Elastic[T] from non-slice version Elastic[T].
The internal value of e is retained by the returned value.
func FromOptions ¶
FromOptions converts slice of option.Option[T] into Elastic[T]. options is retained by the returned value.
func FromPointer ¶
FromPointer converts nil to undefined Elastic[T], or defined one whose internal value is dereferenced t.
func FromPointers ¶
FromPointers converts []*T into an Elastic[T], treating nil as None[T], and non-nil as Some[T].
func FromUnd ¶
FromUnd converts sliceund.Und[option.Options[T]] into Elastic[T].
u is retained by the returned value.
func FromValues ¶
FromValues converts []T into an Elastic[T].
func (Elastic[T]) Clone ¶
Clone implements option.Cloner[Elastic[T]].
Clone clones its internal option.Option slice by copy. Or if T implements Cloner[T], each element is cloned.
func (Elastic[T]) Elastic ¶
Elastic converts e into non-slice version Elastic[T].
The internal value of e is retained by the returned value.
func (Elastic[T]) Equal ¶
Equal implements option.Equality[Elastic[T]].
Equal panics if T is uncomparable.
func (Elastic[T]) EqualFunc ¶
EqualFunc reports whether two Elastic values are equal. EqualFunc checks state of both. If both state does not match, it returns false. If both are "defined" and lengths of their internal value match, it then checks equality of their value by cmp. It returns true if they are equal.
func (Elastic[T]) IsDefined ¶
IsDefined returns true if e is a defined Elastic[T], which includes a slice with no element.
func (Elastic[T]) IsUndefined ¶
IsUndefined returns true if e is an undefined Elastic[T].
func (Elastic[T]) Iter ¶
Iter returns an iterator over the internal option. If e is undefined, the iterator yields nothing, otherwise the internal option.
func (Elastic[T]) Map ¶
func (e Elastic[T]) Map(f func(sliceund.Und[option.Options[T]]) sliceund.Und[option.Options[T]]) Elastic[T]
Map returns a new Elastic[T] whose internal value is e's mapped by f.
The internal slice of e is capped to its length before passed to f.
func (Elastic[T]) MarshalJSON ¶
MarshalJSON implements json.Marshaler.
func (Elastic[T]) MarshalJSONV2 ¶
MarshalJSONV2 implements jsonv2.MarshalerV2.
func (Elastic[T]) MarshalXML ¶
MarshalXML implements xml.Marshaler.
func (Elastic[T]) PlainMultiple
deprecated
func (e Elastic[T]) PlainMultiple() []*T
Deprecated: use Pointers
func (Elastic[T]) PlainSingle
deprecated
func (e Elastic[T]) PlainSingle() *T
Deprecated: use Pointer.
func (Elastic[T]) Pointer ¶
func (e Elastic[T]) Pointer() *T
Pointer returns a first value of its internal option slice as *T if e is defined.
Pointer returns nil if
- e is not defined
- e has no element
- e's first element is None.
func (Elastic[T]) Pointers ¶
func (e Elastic[T]) Pointers() []*T
Pointer returns its internal option slice as []*T if e is defined.
func (*Elastic[T]) UnmarshalJSON ¶
UnmarshalJSON implements json.Unmarshaler.
func (*Elastic[T]) UnmarshalXML ¶
UnmarshalXML implements xml.Unmarshaler.
func (Elastic[T]) ValidateUnd ¶
func (Elastic[T]) Value ¶
func (e Elastic[T]) Value() T
Value returns a first value of its internal option slice if e is defined. Otherwise it returns zero value for T.
func (Elastic[T]) ValueMultiple
deprecated
func (e Elastic[T]) ValueMultiple() []T
Deprecated: use Values.
func (Elastic[T]) ValueSingle
deprecated
func (e Elastic[T]) ValueSingle() T
Deprecated: use Value.