elastic

package
v1.0.0-alpha5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 31, 2024 License: Apache-2.0 Imports: 11 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func UndValidate

func UndValidate[T validate.UndValidator](e Elastic[T]) error

Types

type Elastic

type Elastic[T any] sliceund.Und[option.Options[T]]

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

func FromElastic[T any](e elastic.Elastic[T]) Elastic[T]

FromElastic create a new Elastic[T] from non-slice version Elastic[T].

The internal value of e is retained by the returned value.

func FromOptionSeq

func FromOptionSeq[T any](seq iter.Seq[option.Option[T]]) Elastic[T]

func FromOptions

func FromOptions[T any](options ...option.Option[T]) Elastic[T]

FromOptions converts variadic option.Option[T] values into Elastic[T]. options is retained by the returned value.

func FromPointer

func FromPointer[T any](t *T) Elastic[T]

FromPointer converts nil to undefined Elastic[T], or defined one whose internal value is dereferenced t.

If you need to keep t as pointer, use WrapPointer instead.

func FromPointers

func FromPointers[T any](ps ...*T) Elastic[T]

FromPointers converts variadic *T values into an Elastic[T], treating nil as None[T], and non-nil as Some[T].

If you need to keep t-s as pointer, use WrapPointers instead.

func FromUnd

func FromUnd[T any, Opts ~[]option.Option[T]](u sliceund.Und[Opts]) Elastic[T]

FromUnd converts sliceund.Und[option.Options[T]] into Elastic[T].

u is retained by the returned value.

func FromValue

func FromValue[T any](t T) Elastic[T]

FromValue returns Elastic[T] with single some value.

func FromValues

func FromValues[T any](ts ...T) Elastic[T]

FromValues converts variadic T values into an Elastic[T].

func Map

func Map[T, U any](e Elastic[T], f func(t T) U) Elastic[U]

Map returns a new Elastic value whose internal value is mapped by f.

Be cautious that f will only be applied to some value; null values remain as null.

func Null

func Null[T any]() Elastic[T]

Null returns a null Elastic[T].

func Undefined

func Undefined[T any]() Elastic[T]

Undefined returns an undefined Elastic[T].

func WrapPointer

func WrapPointer[T any](t *T) Elastic[*T]

WrapPointer converts *T into Elastic[*T]. The elastic value is defined if t is non nil, undefined otherwise.

If you want t to be dereferenced, use FromPointer instead.

func WrapPointers

func WrapPointers[T any](ps ...*T) Elastic[*T]

FromPointers converts variadic *T values into an Elastic[*T], treating nil as None[*T], and non-nil as Some[*T].

If you need t-s to be dereferenced, use FromPointers instead.

func (Elastic[T]) Clone

func (e Elastic[T]) Clone() Elastic[T]

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

func (e Elastic[T]) Elastic() elastic.Elastic[T]

Elastic converts e into non-slice version Elastic[T].

The internal value of e is retained by the returned value.

func (Elastic[T]) Equal

func (e Elastic[T]) Equal(other Elastic[T]) bool

Equal implements option.Equality[Elastic[T]].

Equal panics if T is uncomparable.

func (Elastic[T]) EqualFunc

func (e Elastic[T]) EqualFunc(other Elastic[T], cmp func(i, j T) bool) bool

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]) HasNull

func (e Elastic[T]) HasNull() bool

HasNull reports e is defined value has null in ins value.

func (Elastic[T]) IsDefined

func (e Elastic[T]) IsDefined() bool

IsDefined returns true if e is a defined Elastic[T], which includes a slice with no element.

func (Elastic[T]) IsNull

func (e Elastic[T]) IsNull() bool

IsNull returns true if e is a null Elastic[T].

func (Elastic[T]) IsUndefined

func (e Elastic[T]) IsUndefined() bool

IsUndefined returns true if e is an undefined Elastic[T].

func (Elastic[T]) IsZero

func (e Elastic[T]) IsZero() bool

IsZero is an alias for IsUndefined.

func (Elastic[T]) Iter

func (e Elastic[T]) Iter() iter.Seq[option.Option[option.Options[T]]]

Iter returns an iterator over the internal option. If e is undefined, the iterator yields nothing, otherwise the internal option.

func (Elastic[T]) Len

func (e Elastic[T]) Len() int

Len returns length of values.

func (Elastic[T]) LogValue

func (e Elastic[T]) LogValue() slog.Value

LogValue implements slog.LogValuer.

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

func (u Elastic[T]) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (Elastic[T]) MarshalJSONV2

func (e Elastic[T]) MarshalJSONV2(enc *jsontext.Encoder, opts jsonv2.Options) error

MarshalJSONV2 implements jsonv2.MarshalerV2.

func (Elastic[T]) MarshalXML

func (e Elastic[T]) MarshalXML(enc *xml.Encoder, start xml.StartElement) error

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]) UndCheck

func (e Elastic[T]) UndCheck() error

func (Elastic[T]) UndValidate

func (e Elastic[T]) UndValidate() error

func (*Elastic[T]) UnmarshalJSON

func (e *Elastic[T]) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*Elastic[T]) UnmarshalXML

func (e *Elastic[T]) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implements xml.Unmarshaler.

func (Elastic[T]) Unwrap

func (e Elastic[T]) Unwrap() sliceund.Und[option.Options[T]]

Unwrap unwraps e.

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.

func (Elastic[T]) Values

func (e Elastic[T]) Values() []T

Values returns internal option slice as plain []T.

If e is not defined, it returns nil. Any None value in its internal option slice will be converted to zero value of T.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL