Documentation
¶
Index ¶
- type Elastic
- 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 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]) Clone() Elastic[T]
- func (e Elastic[T]) Equal(other Elastic[T]) 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]) 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]) 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] can be a skippable 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 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 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]) Equal ¶
Equal implements option.Equality[Elastic[T]].
Equal panics if T is uncomparable.
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]) 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]) 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.