Documentation ¶
Overview ¶
Package views provides read-only accessors for commonly used value types.
Index ¶
- func SliceContains[T comparable](v Slice[T], e T) bool
- func SliceContainsFunc[T any](v Slice[T], f func(T) bool) bool
- func SliceEqual[T comparable](a, b Slice[T]) bool
- func SliceEqualAnyOrder[T comparable](a, b Slice[T]) bool
- type ByteSlice
- func (v ByteSlice[T]) AppendTo(dst T) T
- func (v ByteSlice[T]) AsSlice() T
- func (v ByteSlice[T]) At(i int) byte
- func (v ByteSlice[T]) Equal(b T) bool
- func (v ByteSlice[T]) EqualView(b ByteSlice[T]) bool
- func (v ByteSlice[T]) IsNil() bool
- func (v ByteSlice[T]) Len() int
- func (v ByteSlice[T]) LenIter() []struct{}
- func (v ByteSlice[T]) MarshalJSON() ([]byte, error)
- func (v ByteSlice[T]) Mem() mem.RO
- func (v ByteSlice[T]) Slice(i, j int) ByteSlice[T]
- func (v ByteSlice[T]) SliceFrom(i int) ByteSlice[T]
- func (v ByteSlice[T]) SliceTo(i int) ByteSlice[T]
- func (v *ByteSlice[T]) UnmarshalJSON(b []byte) error
- type Map
- func (m *Map[K, V]) AsMap() map[K]V
- func (m Map[K, V]) Get(k K) V
- func (m Map[K, V]) GetOk(k K) (V, bool)
- func (m Map[K, V]) Has(k K) bool
- func (m Map[K, V]) IsNil() bool
- func (m Map[K, V]) Len() int
- func (m Map[K, V]) MarshalJSON() ([]byte, error)
- func (m Map[K, V]) Range(f MapRangeFn[K, V])
- func (m *Map[K, V]) UnmarshalJSON(b []byte) error
- type MapFn
- type MapRangeFn
- type Slice
- func (v Slice[T]) AppendTo(dst []T) []T
- func (v Slice[T]) AsSlice() []T
- func (v Slice[T]) At(i int) T
- func (v Slice[T]) ContainsFunc(f func(T) bool) bool
- func (v Slice[T]) IndexFunc(f func(T) bool) int
- func (v Slice[T]) IsNil() bool
- func (v Slice[T]) Len() int
- func (v Slice[T]) LenIter() []struct{}
- func (v Slice[T]) MarshalJSON() ([]byte, error)
- func (v Slice[T]) Slice(i, j int) Slice[T]
- func (v Slice[T]) SliceFrom(i int) Slice[T]
- func (v Slice[T]) SliceTo(i int) Slice[T]
- func (v *Slice[T]) UnmarshalJSON(b []byte) error
- type SliceView
- func (v SliceView[T, V]) AppendTo(dst []V) []V
- func (v SliceView[T, V]) AsSlice() []V
- func (v SliceView[T, V]) At(i int) V
- func (v SliceView[T, V]) IsNil() bool
- func (v SliceView[T, V]) Len() int
- func (v SliceView[T, V]) LenIter() []struct{}
- func (v SliceView[T, V]) MarshalJSON() ([]byte, error)
- func (v SliceView[T, V]) Slice(i, j int) SliceView[T, V]
- func (v SliceView[T, V]) SliceFrom(i int) SliceView[T, V]
- func (v SliceView[T, V]) SliceTo(i int) SliceView[T, V]
- func (v *SliceView[T, V]) UnmarshalJSON(b []byte) error
- type StructView
- type ViewCloner
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SliceContains ¶ added in v1.30.0
func SliceContains[T comparable](v Slice[T], e T) bool
SliceContains reports whether v contains element e.
As it runs in O(n) time, use with care.
func SliceContainsFunc ¶ added in v1.50.0
SliceContainsFunc reports whether f reports true for any element in v.
func SliceEqual ¶ added in v1.50.0
func SliceEqual[T comparable](a, b Slice[T]) bool
SliceEqual is like the standard library's slices.Equal, but for two views.
func SliceEqualAnyOrder ¶ added in v1.36.0
func SliceEqualAnyOrder[T comparable](a, b Slice[T]) bool
SliceEqualAnyOrder reports whether a and b contain the same elements, regardless of order. The underlying slices for a and b can be nil.
Types ¶
type ByteSlice ¶ added in v1.50.0
type ByteSlice[T ~[]byte] struct { // contains filtered or unexported fields }
ByteSlice is a read-only accessor for types that are backed by a []byte.
func ByteSliceOf ¶ added in v1.50.0
ByteSliceOf returns a ByteSlice for the provided slice.
func (ByteSlice[T]) AppendTo ¶ added in v1.50.0
func (v ByteSlice[T]) AppendTo(dst T) T
AppendTo appends the underlying slice values to dst.
func (ByteSlice[T]) AsSlice ¶ added in v1.50.0
func (v ByteSlice[T]) AsSlice() T
AsSlice returns a copy of the underlying slice.
func (ByteSlice[T]) Equal ¶ added in v1.50.0
Equal reports whether the underlying slice is equal to b.
func (ByteSlice[T]) EqualView ¶ added in v1.50.0
EqualView reports whether the underlying slice is equal to b.
func (ByteSlice[T]) LenIter ¶ added in v1.50.0
func (v ByteSlice[T]) LenIter() []struct{}
LenIter returns a slice the same length as the v.Len(). The caller can then range over it to get the valid indexes. It does not allocate.
func (ByteSlice[T]) MarshalJSON ¶ added in v1.50.0
MarshalJSON implements json.Marshaler.
func (*ByteSlice[T]) UnmarshalJSON ¶ added in v1.50.0
UnmarshalJSON implements json.Unmarshaler.
type Map ¶ added in v1.26.0
type Map[K comparable, V any] struct { // contains filtered or unexported fields }
Map is a view over a map whose values are immutable.
func MapOf ¶ added in v1.26.0
func MapOf[K comparable, V comparable](m map[K]V) Map[K, V]
MapOf returns a view over m. It is the caller's responsibility to make sure K and V is immutable, if this is being used to provide a read-only view over m.
func (*Map[K, V]) AsMap ¶ added in v1.46.0
func (m *Map[K, V]) AsMap() map[K]V
AsMap returns a shallow-clone of the underlying map. If V is a pointer type, it is the caller's responsibility to make sure the values are immutable.
func (Map[K, V]) Get ¶ added in v1.26.0
func (m Map[K, V]) Get(k K) V
Get returns the element with key k.
func (Map[K, V]) GetOk ¶ added in v1.26.0
GetOk returns the element with key k and a bool representing whether the key is in map.
func (Map[K, V]) MarshalJSON ¶ added in v1.46.0
MarshalJSON implements json.Marshaler.
func (Map[K, V]) Range ¶ added in v1.26.0
func (m Map[K, V]) Range(f MapRangeFn[K, V])
Range calls f for every k,v pair in the underlying map. It stops iteration immediately if f returns false.
func (*Map[K, V]) UnmarshalJSON ¶ added in v1.46.0
UnmarshalJSON implements json.Unmarshaler. It should only be called on an uninitialized Map.
type MapFn ¶ added in v1.26.0
type MapFn[K comparable, T any, V any] struct { // contains filtered or unexported fields }
MapFn is like Map but with a func to convert values from T to V. It is used to provide map of slices and views.
func MapFnOf ¶ added in v1.26.0
func MapFnOf[K comparable, T any, V any](m map[K]T, f func(T) V) MapFn[K, T, V]
MapFnOf returns a MapFn for m.
func (MapFn[K, T, V]) Get ¶ added in v1.26.0
func (m MapFn[K, T, V]) Get(k K) V
Get returns the element with key k.
func (MapFn[K, T, V]) GetOk ¶ added in v1.26.0
GetOk returns the element with key k and a bool representing whether the key is in map.
func (MapFn[K, T, V]) Range ¶ added in v1.26.0
func (m MapFn[K, T, V]) Range(f MapRangeFn[K, V])
Range calls f for every k,v pair in the underlying map. It stops iteration immediately if f returns false.
type MapRangeFn ¶ added in v1.26.0
type MapRangeFn[K comparable, V any] func(k K, v V) (cont bool)
MapRangeFn is the func called from a Map.Range call. Implementations should return false to stop range.
type Slice ¶ added in v1.24.0
type Slice[T any] struct { // contains filtered or unexported fields }
Slice is a read-only accessor for a slice.
func SliceOf ¶ added in v1.24.0
SliceOf returns a Slice for the provided slice for immutable values. It is the caller's responsibility to make sure V is immutable.
func (Slice[T]) AppendTo ¶ added in v1.24.0
func (v Slice[T]) AppendTo(dst []T) []T
AppendTo appends the underlying slice values to dst.
func (Slice[T]) AsSlice ¶ added in v1.24.0
func (v Slice[T]) AsSlice() []T
AsSlice returns a copy of underlying slice.
func (Slice[T]) ContainsFunc ¶ added in v1.30.0
ContainsFunc reports whether any element in v satisfies f(e).
As it runs in O(n) time, use with care.
func (Slice[T]) IndexFunc ¶ added in v1.30.0
IndexFunc returns the first index of an element in v satisfying f(e), or -1 if none do.
As it runs in O(n) time, use with care.
func (Slice[T]) LenIter ¶ added in v1.50.0
func (v Slice[T]) LenIter() []struct{}
LenIter returns a slice the same length as the v.Len(). The caller can then range over it to get the valid indexes. It does not allocate.
func (Slice[T]) MarshalJSON ¶ added in v1.24.0
MarshalJSON implements json.Marshaler.
func (*Slice[T]) UnmarshalJSON ¶ added in v1.24.0
UnmarshalJSON implements json.Unmarshaler.
type SliceView ¶ added in v1.26.0
type SliceView[T ViewCloner[T, V], V StructView[T]] struct { // contains filtered or unexported fields }
SliceView wraps []T to provide accessors which return an immutable view V of T. It is used to provide the equivalent of SliceOf([]V) without having to allocate []V from []T.
func SliceOfViews ¶ added in v1.26.0
func SliceOfViews[T ViewCloner[T, V], V StructView[T]](x []T) SliceView[T, V]
SliceOfViews returns a ViewSlice for x.
func (SliceView[T, V]) AppendTo ¶ added in v1.26.0
func (v SliceView[T, V]) AppendTo(dst []V) []V
AppendTo appends the underlying slice values to dst.
func (SliceView[T, V]) AsSlice ¶ added in v1.26.0
func (v SliceView[T, V]) AsSlice() []V
AsSlice returns a copy of underlying slice.
func (SliceView[T, V]) At ¶ added in v1.26.0
At returns a View of the element at index `i` of the slice.
func (SliceView[T, V]) LenIter ¶ added in v1.50.0
func (v SliceView[T, V]) LenIter() []struct{}
LenIter returns a slice the same length as the v.Len(). The caller can then range over it to get the valid indexes. It does not allocate.
func (SliceView[T, V]) MarshalJSON ¶ added in v1.26.0
MarshalJSON implements json.Marshaler.
func (*SliceView[T, V]) UnmarshalJSON ¶ added in v1.26.0
UnmarshalJSON implements json.Unmarshaler.
type StructView ¶ added in v1.26.0
type StructView[T any] interface { // Valid reports whether the underlying Viewable is nil. Valid() bool // AsStruct returns a deep-copy of the underlying value. // It returns nil, if Valid() is false. AsStruct() T }
StructView represents the corresponding StructView of a Viewable. The concrete types are typically generated by tailscale.com/cmd/viewer.
type ViewCloner ¶ added in v1.26.0
type ViewCloner[T any, V StructView[T]] interface { // View returns a read-only view of Viewable. // If Viewable is nil, View().Valid() reports false. View() V // Clone returns a deep-clone of Viewable. // It returns nil, when Viewable is nil. Clone() T }
ViewCloner is any type that has had View and Clone funcs generated using tailscale.com/cmd/viewer.