c

package
v0.0.11 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2023 License: MIT Imports: 2 Imported by: 1

Documentation

Overview

Package c provides common types of containers, utility types and functions

Index

Constants

This section is empty.

Variables

View Source
var ErrBreak = errors.New("Break")

ErrBreak is the 'break' statement of the For, Track methods

Functions

This section is empty.

Types

type Access

type Access[P any, V any] interface {
	Get(P) (V, bool)
}

Access provides access to an element by its pointer (index, key, coordinate, etc.) Where:

P - a type of pointer to a value (index, map key, coordinates)
V - any arbitrary type of the value

type Addable

type Addable[T any] interface {
	Add(...T)
	AddOne(T)
}

Addable provides appending the collection by elements.

type AddableAll added in v0.0.7

type AddableAll[Iterable any] interface {
	AddAll(Iterable)
}

AddableAll provides appending the collection by elements retrieved from another collection

type AddableAllNew added in v0.0.7

type AddableAllNew[Iterable any] interface {
	AddAllNew(Iterable) bool
}

AddableAllNew provides appending the collection by elements retrieved from another collection

type AddableNew added in v0.0.7

type AddableNew[T any] interface {
	AddNew(...T) bool
	AddOneNew(T) bool
}

AddableNew provides appending the collection by elements.

type Checkable

type Checkable[T any] interface {
	Contains(T) bool
}

Checkable is container with ability to check if an element is present.

type Collection

type Collection[T any] interface {
	Iterable[T]
	ForLoop[T]
	ForEachLoop[T]
	SliceFactory[T]

	Reduce(merger func(T, T) T) T
}

Collection is the base interface of non-associative collections

type Convertable added in v0.0.7

type Convertable[T, Stream, StreamBreakable any] interface {
	Convert(converter func(T) T) Stream
	Conv(converter func(T) (T, error)) StreamBreakable
}

Convertable provides converaton of collection elements functionality

type DelIterator

type DelIterator[T any] interface {
	Iterator[T]
	Delete()
}

DelIterator is the Iterator provides deleting of current element.

type Deleteable

type Deleteable[k any] interface {
	Delete(...k)
	DeleteOne(k)
}

Deleteable provides removing any elements from the collection.

type DeleteableVerify added in v0.0.7

type DeleteableVerify[k any] interface {
	DeleteActual(...k) bool
	DeleteActualOne(k) bool
}

DeleteableVerify provides removing any elements from the collection.

type Filterable added in v0.0.7

type Filterable[T, Stream, StreamBreakable any] interface {
	Filter(predicate func(T) bool) Stream
	Filt(predicate func(T) (bool, error)) StreamBreakable
}

Filterable provides filtering content functionality

type ForEachLoop added in v0.0.7

type ForEachLoop[T any] interface {
	// ForEach takes all elements of the collection
	ForEach(func(element T))
}

ForEachLoop is the interface of a collection that provides traversing of the elements without error checking.

type ForLoop added in v0.0.7

type ForLoop[IT any] interface {
	//For takes elements of the collection. Can be interrupt by returning ErrBreak.
	For(func(element IT) error) error
}

ForLoop is the interface of a collection that provides traversing of the elements.

type ImmutableMapConvert added in v0.0.7

type ImmutableMapConvert[M any] interface {
	Immutable() M
}

ImmutableMapConvert provides converting to an immutable map instance.

type IterFor added in v0.0.10

type IterFor[T any, I Iterator[T]] interface {
	// Start is used with for loop construct.
	// Returns the iterator itself, the first element, and ok == false if the iteration must be completed.
	//
	// 	var i IterFor = ...
	// 	for i, val, ok := i.Start(); ok; val, ok = i.Next() {
	//  	_ = val
	//	}
	Start() (iterator I, val T, ok bool)
}

IterFor extends an iterator type by a 'Start' function implementation

type Iterable

type Iterable[T any] interface {
	Iter() Iterator[T]
}

Iterable is an iterator supplier interface

type Iterator

type Iterator[T any] interface {
	// Next returns the next element.
	// The ok result indicates whether the element was returned by the iterator.
	// If ok == false, then the iteration must be completed.
	Next() (out T, ok bool)

	ForLoop[T]
	ForEachLoop[T]
}

Iterator provides iterate over elements of a collection

type KV

type KV[k any, v any] struct {
	K k
	V v
}

KV is the simplest implementation of a key/value pair.

func (KV[K, V]) Get added in v0.0.7

func (k KV[K, V]) Get() (K, V)

Get returns the key/value pair

func (KV[K, V]) Key

func (k KV[K, V]) Key() K

Key returns the key

func (KV[K, V]) Value

func (k KV[K, V]) Value() V

Value returns the value

type KeyVal added in v0.0.7

type KeyVal[Keys any, Vals any] interface {
	Keys() Keys
	Values() Vals
}

KeyVal provides extracing of a keys or values collection from key/value pairs

type MapFactory added in v0.0.7

type MapFactory[K comparable, V any, Map map[K]V | map[K][]V] interface {
	Map() Map
}

MapFactory collects the key/value pairs of the collection into a map

type Number added in v0.0.3

type Number interface {
	constraints.Integer | constraints.Float | constraints.Complex
}

Number is a type that supports the operators +, -, /, *

type PrevIterator

type PrevIterator[T any] interface {
	Iterator[T]
	//retrieves a prev element and true or zero value of T and false if no more elements
	Prev() (T, bool)
}

PrevIterator is the Iterator that provides reverse iteration over elements of a collection

type Removable

type Removable[P any, V any] interface {
	Remove(P) (V, bool)
}

Removable provides removing an element by its pointer (index or key).

type Settable

type Settable[P any, V any] interface {
	Set(key P, value V)
}

Settable provides element insertion or replacement by its pointer (index or key).

type SettableMap added in v0.0.7

type SettableMap[Map any] interface {
	SetMap(m Map)
}

SettableMap provides element insertion or replacement with an equal key element of a map.

type SettableNew added in v0.0.7

type SettableNew[P any, V any] interface {
	SetNew(key P, value V) bool
}

SettableNew provides element insertion by its pointer (index or key) only if the specified place is not occupied.

type Sized added in v0.0.4

type Sized interface {
	// returns an estimated internal storage capacity or -1 if the capacity cannot be calculated
	Cap() int
}

Sized - storage interface with measurable capacity

type SliceFactory added in v0.0.7

type SliceFactory[T any] interface {
	Slice() []T
	Append([]T) []T
}

SliceFactory collects the elements of the collection into a slice

type Summable added in v0.0.3

type Summable interface {
	constraints.Ordered | constraints.Complex | string
}

Summable is a type that supports the operator +

type TrackEachLoop added in v0.0.7

type TrackEachLoop[P any, T any] interface {
	TrackEach(func(position P, element T))
}

TrackEachLoop is the interface of a collection that provides traversing of the elements with position tracking (index, key, coordinates, etc.) without error checking

type TrackLoop added in v0.0.7

type TrackLoop[P any, T any] interface {
	// return ErrBreak for loop breaking
	Track(func(position P, element T) error) error
}

TrackLoop is the interface of a collection that provides traversing of the elements with position tracking (index, key, coordinates, etc.).

Jump to

Keyboard shortcuts

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