utils

package
v0.0.0-...-bc03976 Latest Latest
Warning

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

Go to latest
Published: Sep 8, 2024 License: BSD-3-Clause Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetStacktrace

func GetStacktrace(all bool) string

func IsSortedAndUnique

func IsSortedAndUnique[T Sortable[T]](s []T) bool

Returns true iff the elements in [s] are unique and sorted.

func IsSortedAndUniqueByHash

func IsSortedAndUniqueByHash[T ~[]byte](s []T) bool

Returns true iff the elements in [s] are unique and sorted based by their hashes.

func IsSortedAndUniqueOrdered

func IsSortedAndUniqueOrdered[T cmp.Ordered](s []T) bool

Returns true iff the elements in [s] are unique and sorted.

func IsSortedBytes

func IsSortedBytes[T ~[]byte](s []T) bool

Returns true iff the elements in [s] are sorted.

func Join

func Join[T any](slices ...[]T) []T

Join merges the provided slices into a single slice.

TODO: Use slices.Concat once the minimum go version is 1.22.

func RandomBytes

func RandomBytes(n int) []byte

RandomBytes returns a slice of n random bytes Intended for use in testing

func Sort

func Sort[T Sortable[T]](s []T)

Sorts the elements of [s].

func SortByHash

func SortByHash[T ~[]byte](s []T)

Sorts the elements of [s] based on their hashes.

func Zero

func Zero[T any]() T

Returns a new instance of a T.

func ZeroSlice

func ZeroSlice[T any](s []T)

ZeroSlice sets all values of the provided slice to the type's zero value.

This can be useful to ensure that the garbage collector doesn't hold references to values that are no longer desired.

Types

type Atomic

type Atomic[T any] struct {
	// contains filtered or unexported fields
}

func NewAtomic

func NewAtomic[T any](value T) *Atomic[T]

func (*Atomic[T]) Get

func (a *Atomic[T]) Get() T

func (*Atomic[T]) MarshalJSON

func (a *Atomic[T]) MarshalJSON() ([]byte, error)

func (*Atomic[T]) Set

func (a *Atomic[T]) Set(value T)

func (*Atomic[T]) UnmarshalJSON

func (a *Atomic[T]) UnmarshalJSON(b []byte) error

type BytesPool

type BytesPool [intSize]sync.Pool

BytesPool tracks buckets of available buffers to be allocated. Each bucket allocates buffers of the following length:

0 1 3 7 15 31 63 127 ... MaxInt

In order to allocate a buffer of length 19 (for example), we calculate the number of bits required to represent 19 (5). And therefore allocate a slice from bucket 5, which has length 31. This is the bucket which produces the smallest slices that are at least length 19.

When replacing a buffer of length 19, we calculate the number of bits required to represent 20 (5). And therefore place the slice into bucket 4, which has length 15. This is the bucket which produces the largest slices that a length 19 slice can be used for.

func NewBytesPool

func NewBytesPool() *BytesPool

func (*BytesPool) Get

func (p *BytesPool) Get(length int) *[]byte

Get returns a non-nil pointer to a slice with the requested length.

It is not guaranteed for the returned bytes to have been zeroed.

func (*BytesPool) Put

func (p *BytesPool) Put(bytes *[]byte)

Put takes ownership of a non-nil pointer to a slice of bytes.

Note: this function takes ownership of the underlying array. So, the length of the provided slice is ignored and only its capacity is used.

type Sortable

type Sortable[T any] interface {
	Compare(T) int
}

Directories

Path Synopsis
crypto
bls
keychain/keychainmock
Package keychainmock is a generated GoMock package.
Package keychainmock is a generated GoMock package.
filesystemmock
Package filesystemmock is a generated GoMock package.
Package filesystemmock is a generated GoMock package.
hashingmock
Package hashingmock is a generated GoMock package.
Package hashingmock is a generated GoMock package.
iteratormock
Package iteratormock is a generated GoMock package.
Package iteratormock is a generated GoMock package.
resourcemock
Package resourcemock is a generated GoMock package.
Package resourcemock is a generated GoMock package.

Jump to

Keyboard shortcuts

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