Documentation ¶
Overview ¶
Package loop provides helpers for loop operation and iterator implementations
Index ¶
- Variables
- func Append[T any, TS ~[]T](next func() (T, bool), out TS) TS
- func Contains[T comparable](next func() (T, bool), example T) bool
- func Conv[From, To any](next func() (From, bool), converter func(From) (To, error)) loop.ConvertIter[From, To]
- func ConvAndReduce[From, To any](next func() (From, bool), converter func(From) (To, error), ...) (out To, err error)
- func ConvCheck[From, To any](next func() (From, bool), converter func(from From) (To, bool, error)) loop.ConvertCheckIter[From, To]
- func ConvertAndReduce[From, To any](next func() (From, bool), converter func(From) To, merger func(To, To) To) (out To)
- func ExtraKeyss[T, K any](next func() (T, bool), keyExtractor func(T) (K, error)) *loop.MultipleKeyValuer[T, K, T]
- func ExtraKeyy[T, K any](next func() (T, bool), keyExtractor func(T) (K, error)) loop.KeyValuer[T, K, T]
- func ExtraValss[T, V any](next func() (T, bool), valsExtractor func(T) ([]V, error)) *loop.MultipleKeyValuer[T, T, V]
- func ExtraValuee[T, V any](next func() (T, bool), valExtractor func(T) (V, error)) loop.KeyValuer[T, T, V]
- func Filt[T any](next func() (T, bool), filter func(T) (bool, error)) loop.FiltIter[T]
- func FiltAndConv[From, To any](next func() (From, bool), filter func(From) (bool, error), ...) loop.ConvFiltIter[From, To]
- func FiltAndFlat[From, To any](next func() (From, bool), filter func(From) (bool, error), ...) *loop.FlattFiltIter[From, To]
- func FiltFlattFilt[From, To any](next func() (From, bool), filterFrom func(From) (bool, error), ...) *loop.FlattFiltIter[From, To]
- func First[T any](next func() (T, bool), predicate func(T) bool) (v T, ok bool)
- func FlatAndFilt[From, To any](next func() (From, bool, error), flattener func(From) ([]To, error), ...) *loop.FlattFiltIter[From, To]
- func Flatt[From, To any](next func() (From, bool), flattener func(From) ([]To, error)) *loop.FlatIter[From, To]
- func For[T any](next func() (T, bool), walker func(T) error) error
- func ForEach[T any](next func() (T, bool), walker func(T))
- func ForEachFiltered[T any](next func() (T, bool), predicate func(T) bool, walker func(T))
- func Group[T any, K comparable, V any](next func() (T, bool), keyExtractor func(T) K, valExtractor func(T) V) map[K][]V
- func GroupByMultiple[T any, K comparable, V any](next func() (T, bool), keysExtractor func(T) []K, valsExtractor func(T) []V) map[K][]V
- func GroupByMultipleKeys[T any, K comparable, V any](next func() (T, bool), keysExtractor func(T) []K, valExtractor func(T) V) map[K][]V
- func GroupByMultipleValues[T any, K comparable, V any](next func() (T, bool), keyExtractor func(T) K, valsExtractor func(T) []V) map[K][]V
- func Groupp[T any, K comparable, V any](next func() (T, bool), keyExtractor func(T) (K, error), ...) (map[K][]V, error)
- func HasAny[T any](next func() (T, bool), predicate func(T) bool) bool
- func KeyValuee[T any, K, V any](next func() (T, bool), keyExtractor func(T) (K, error), ...) loop.KeyValuer[T, K, V]
- func KeyValuess[T, K, V any](next func() (T, bool), keyExtractor func(T) (K, error), ...) *loop.MultipleKeyValuer[T, K, V]
- func KeysValuee[T, K, V any](next func() (T, bool), keysExtractor func(T) ([]K, error), ...) *loop.MultipleKeyValuer[T, K, V]
- func New[S, T any](source S, hasNext func(S) bool, getNext func(S) T) func() (T, bool)
- func Of[T any](elements ...T) func() (e T, ok bool)
- func OfIndexed[T any](len int, next func(int) T) func() (T, bool)
- func Range[T constraints.Integer](from T, toExclusive T) func() (T, bool)
- func RangeClosed[T constraints.Integer](from T, toInclusive T) func() (T, bool)
- func Reduce[T any](next func() (T, bool), merger func(T, T) T) (result T)
- func Slice[T any](next func() (T, bool)) []T
- func SliceCap[T any](next func() (T, bool), cap int) (out []T)
- func Start[T any](next func() (T, bool)) (func() (T, bool), T, bool)
- func Sum[T c.Summable](next func() (T, bool)) T
- func ToMap[T any, K comparable, V any](next func() (T, bool), keyExtractor func(T) K, valExtractor func(T) V) map[K]V
- func ToMapResolv[T any, K comparable, V, VR any](next func() (T, bool), keyExtractor func(T) K, valExtractor func(T) V, ...) map[K]VR
- func ToMapp[T any, K comparable, V any](next func() (T, bool), keyExtractor func(T) (K, error), ...) (map[K]V, error)
- func Track[I, T any](next func() (I, T, bool), tracker func(I, T) error) error
- func TrackEach[I, T any](next func() (I, T, bool), tracker func(I, T))
- type ConvertCheckIter
- type ConvertFiltIter
- func ConvertAndFilter[From, To any](next func() (From, bool), converter func(From) To, filter func(To) bool) ConvertFiltIter[From, To]
- func FilterAndConvert[From, To any](next func() (From, bool), filter func(From) bool, converter func(From) To) ConvertFiltIter[From, To]
- func FilterConvertFilter[From, To any](next func() (From, bool), filter func(From) bool, converter func(From) To, ...) ConvertFiltIter[From, To]
- type ConvertIter
- type FiltIter
- type FlatFilterIter
- func FilterAndFlat[From, To any](next func() (From, bool), filter func(From) bool, flattener func(From) []To) *FlatFilterIter[From, To]
- func FilterFlatFilter[From, To any](next func() (From, bool), filterFrom func(From) bool, ...) *FlatFilterIter[From, To]
- func FlattAndFilter[From, To any](next func() (From, bool), flattener func(From) []To, filterTo func(To) bool) *FlatFilterIter[From, To]
- type FlatIter
- type KeyValuer
- func ExtraKey[T, K any](next func() (T, bool), keysExtractor func(T) K) KeyValuer[T, K, T]
- func ExtraValue[T, V any](next func() (T, bool), valueExtractor func(T) V) KeyValuer[T, T, V]
- func KeyValue[T any, K, V any](next func() (T, bool), keyExtractor func(T) K, valExtractor func(T) V) KeyValuer[T, K, V]
- func NewKeyValuer[T any, K, V any](next func() (T, bool), keyExtractor func(T) K, valsExtractor func(T) V) KeyValuer[T, K, V]
- type Looper
- type MultipleKeyValuer
- func ExtraKeys[T, K any](next func() (T, bool), keysExtractor func(T) []K) *MultipleKeyValuer[T, K, T]
- func ExtraVals[T, V any](next func() (T, bool), valsExtractor func(T) []V) *MultipleKeyValuer[T, T, V]
- func KeyValues[T, K, V any](next func() (T, bool), keyExtractor func(T) K, valsExtractor func(T) []V) *MultipleKeyValuer[T, K, V]
- func KeysValue[T, K, V any](next func() (T, bool), keysExtractor func(T) []K, valExtractor func(T) V) *MultipleKeyValuer[T, K, V]
- func KeysValues[T, K, V any](next func() (T, bool), keysExtractor func(T) []K, valsExtractor func(T) []V) *MultipleKeyValuer[T, K, V]
- func NewMultipleKeyValuer[T any, K, V any](next func() (T, bool), keysExtractor func(T) []K, valsExtractor func(T) []V) *MultipleKeyValuer[T, K, V]
- func (kv *MultipleKeyValuer[T, K, V]) Next() (key K, value V, ok bool)
- func (kv *MultipleKeyValuer[T, K, V]) Start() (*MultipleKeyValuer[T, K, V], K, V, bool)
- func (kv *MultipleKeyValuer[T, K, V]) Track(traker func(key K, value V) error) error
- func (kv *MultipleKeyValuer[T, K, V]) TrackEach(traker func(key K, value V))
Constants ¶
This section is empty.
Variables ¶
var ErrBreak = c.ErrBreak
ErrBreak is the 'break' statement of the For, Track methods
Functions ¶
func Append ¶
Append collects the elements retrieved by the 'next' function into the specified 'out' slice
func Contains ¶
func Contains[T comparable](next func() (T, bool), example T) bool
Contains finds the first element that equal to the example and returns true
func Conv ¶ added in v0.0.8
func Conv[From, To any](next func() (From, bool), converter func(From) (To, error)) loop.ConvertIter[From, To]
Conv instantiates an iterator that converts elements with a converter and returns them.
func ConvAndReduce ¶ added in v0.0.8
func ConvAndReduce[From, To any](next func() (From, bool), converter func(From) (To, error), merger func(To, To) To) (out To, err error)
ConvAndReduce converts each elements and merges them into one
func ConvCheck ¶ added in v0.0.8
func ConvCheck[From, To any](next func() (From, bool), converter func(from From) (To, bool, error)) loop.ConvertCheckIter[From, To]
ConvCheck is similar to ConvertFilt, but it checks and transforms elements together
func ConvertAndReduce ¶ added in v0.0.8
func ConvertAndReduce[From, To any](next func() (From, bool), converter func(From) To, merger func(To, To) To) (out To)
ConvertAndReduce converts each elements and merges them into one
func ExtraKeyss ¶ added in v0.0.10
func ExtraKeyss[T, K any](next func() (T, bool), keyExtractor func(T) (K, error)) *loop.MultipleKeyValuer[T, K, T]
ExtraKeyss transforms iterable elements to key/value iterator based on applying key extractor to the elements
func ExtraKeyy ¶ added in v0.0.10
func ExtraKeyy[T, K any](next func() (T, bool), keyExtractor func(T) (K, error)) loop.KeyValuer[T, K, T]
ExtraKeyy transforms iterable elements to key/value iterator based on applying key extractor to the elements
func ExtraValss ¶ added in v0.0.10
func ExtraValss[T, V any](next func() (T, bool), valsExtractor func(T) ([]V, error)) *loop.MultipleKeyValuer[T, T, V]
ExtraValss transforms iterable elements to key/value iterator based on applying values extractor to the elements
func ExtraValuee ¶ added in v0.0.10
func ExtraValuee[T, V any](next func() (T, bool), valExtractor func(T) (V, error)) loop.KeyValuer[T, T, V]
ExtraValuee transforms iterable elements to key/value iterator based on applying value extractor to the elements
func Filt ¶ added in v0.0.8
Filt creates an iterator that checks elements by the 'filter' function and returns successful ones.
func FiltAndConv ¶ added in v0.0.9
func FiltAndConv[From, To any](next func() (From, bool), filter func(From) (bool, error), converter func(From) (To, error)) loop.ConvFiltIter[From, To]
FiltAndConv returns a stream that filters source elements and converts them
func FiltAndFlat ¶ added in v0.0.9
func FiltAndFlat[From, To any](next func() (From, bool), filter func(From) (bool, error), flattener func(From) ([]To, error)) *loop.FlattFiltIter[From, To]
FiltAndFlat filters source elements and extracts slices of 'To' by the 'flattener' function
func FiltFlattFilt ¶ added in v0.0.9
func FiltFlattFilt[From, To any](next func() (From, bool), filterFrom func(From) (bool, error), flattener func(From) ([]To, error), filterTo func(To) (bool, error)) *loop.FlattFiltIter[From, To]
FiltFlattFilt filters source elements, extracts slices of 'To' by the 'flattener' function and filters extracted elements
func First ¶
First returns the first element that satisfies the condition of the 'predicate' function
func FlatAndFilt ¶ added in v0.0.9
func FlatAndFilt[From, To any](next func() (From, bool, error), flattener func(From) ([]To, error), filterTo func(To) (bool, error)) *loop.FlattFiltIter[From, To]
FlatAndFilt extracts slices of 'To' by the 'flattener' function and filters extracted elements
func Flatt ¶
func Flatt[From, To any](next func() (From, bool), flattener func(From) ([]To, error)) *loop.FlatIter[From, To]
Flatt instantiates an iterator that extracts slices of 'To' by a flattener from elements of 'From' and flattens as one iterable collection of 'To' elements.
func For ¶
For applies the 'walker' function for the elements retrieved by the 'next' function. Return the c.ErrBreak to stop
func ForEach ¶
ForEach applies the 'walker' function to the elements retrieved by the 'next' function
func ForEachFiltered ¶
ForEachFiltered applies the 'walker' function to the elements retrieved by the 'next' function that satisfy the 'predicate' function condition
func Group ¶
func Group[T any, K comparable, V any](next func() (T, bool), keyExtractor func(T) K, valExtractor func(T) V) map[K][]V
Group converts elements retrieved by the 'next' function into a map, extracting a key for each element applying the converter 'keyExtractor'. The keyExtractor converts an element to a key. The valExtractor converts an element to an value.
func GroupByMultiple ¶
func GroupByMultiple[T any, K comparable, V any](next func() (T, bool), keysExtractor func(T) []K, valsExtractor func(T) []V) map[K][]V
GroupByMultiple converts elements retrieved by the 'next' function into a map, extracting multiple keys, values per each element applying the 'keysExtractor' and 'valsExtractor' functions. The keysExtractor retrieves one or more keys per element. The valsExtractor retrieves one or more values per element.
func GroupByMultipleKeys ¶
func GroupByMultipleKeys[T any, K comparable, V any](next func() (T, bool), keysExtractor func(T) []K, valExtractor func(T) V) map[K][]V
GroupByMultipleKeys converts elements retrieved by the 'next' function into a map, extracting multiple keys, one value per each element applying the 'keysExtractor' and 'valExtractor' functions. The keysExtractor retrieves one or more keys per element. The valExtractor converts an element to a value.
func GroupByMultipleValues ¶
func GroupByMultipleValues[T any, K comparable, V any](next func() (T, bool), keyExtractor func(T) K, valsExtractor func(T) []V) map[K][]V
GroupByMultipleValues converts elements retrieved by the 'next' function into a map, extracting one key, multiple values per each element applying the 'keyExtractor' and 'valsExtractor' functions. The keyExtractor converts an element to a key. The valsExtractor retrieves one or more values per element.
func Groupp ¶ added in v0.0.10
func Groupp[T any, K comparable, V any](next func() (T, bool), keyExtractor func(T) (K, error), valExtractor func(T) (V, error)) (map[K][]V, error)
Groupp converts elements retrieved by the 'next' function into a map, extracting a key for each element applying the converter 'keyExtractor'. The keyExtractor converts an element to a key. The valExtractor converts an element to an value.
func HasAny ¶
HasAny finds the first element that satisfies the 'predicate' function condition and returns true if successful
func KeyValuee ¶ added in v0.0.10
func KeyValuee[T any, K, V any](next func() (T, bool), keyExtractor func(T) (K, error), valExtractor func(T) (V, error)) loop.KeyValuer[T, K, V]
KeyValuee transforms iterable elements to key/value iterator based on applying key, value extractors to the elements
func KeyValuess ¶ added in v0.0.10
func KeyValuess[T, K, V any](next func() (T, bool), keyExtractor func(T) (K, error), valsExtractor func(T) ([]V, error)) *loop.MultipleKeyValuer[T, K, V]
KeyValuess transforms iterable elements to key/value iterator based on applying key, values extractor to the elements
func KeysValuee ¶ added in v0.0.10
func KeysValuee[T, K, V any](next func() (T, bool), keysExtractor func(T) ([]K, error), valExtractor func(T) (V, error)) *loop.MultipleKeyValuer[T, K, V]
KeysValuee transforms iterable elements to key/value iterator based on applying keys, value extractor to the elements
func OfIndexed ¶ added in v0.0.8
OfIndexed builds a loop by extracting elements from an indexed soruce. the len is length ot the source. the getAt retrieves an element by its index from the source.
func Range ¶ added in v0.0.8
func Range[T constraints.Integer](from T, toExclusive T) func() (T, bool)
Range creates a loop that generates integers in the range defined by from and to exclusive
func RangeClosed ¶ added in v0.0.8
func RangeClosed[T constraints.Integer](from T, toInclusive T) func() (T, bool)
RangeClosed creates a loop that generates integers in the range defined by from and to inclusive
func Reduce ¶
Reduce reduces the elements retrieved by the 'next' function into an one using the 'merger' function
func SliceCap ¶
SliceCap collects the elements retrieved by the 'next' function into a new slice with predefined capacity
func Start ¶ added in v0.0.10
Start is used with for loop construct like 'for i, k, v, ok := i.Start(); ok; k, v, ok = i.Next() { }'
func ToMap ¶ added in v0.0.10
func ToMap[T any, K comparable, V any](next func() (T, bool), keyExtractor func(T) K, valExtractor func(T) V) map[K]V
ToMap collects key\value elements to a map by iterating over the elements
func ToMapResolv ¶
func ToMapResolv[T any, K comparable, V, VR any](next func() (T, bool), keyExtractor func(T) K, valExtractor func(T) V, resolver func(bool, K, VR, V) VR) map[K]VR
ToMapResolv collects key\value elements to a map by iterating over the elements with resolving of duplicated key values
func ToMapp ¶ added in v0.0.10
func ToMapp[T any, K comparable, V any](next func() (T, bool), keyExtractor func(T) (K, error), valExtractor func(T) (V, error)) (map[K]V, error)
ToMapp collects key\value elements to a map by iterating over the elements
Types ¶
type ConvertCheckIter ¶
type ConvertCheckIter[From, To any] struct { // contains filtered or unexported fields }
ConvertCheckIter converts and filters elements at the same time
func ConvertCheck ¶
func ConvertCheck[From, To any](next func() (From, bool), converter func(from From) (To, bool)) ConvertCheckIter[From, To]
ConvertCheck is similar to ConvertFilt, but it checks and transforms elements together
func NoNilPtrVal ¶ added in v0.0.10
func NoNilPtrVal[T any](next func() (*T, bool)) ConvertCheckIter[*T, T]
NoNilPtrVal creates an iterator that transform only not nil pointers to the values referenced referenced by those pointers. Nil pointers are ignored.
func (ConvertCheckIter[From, To]) For ¶ added in v0.0.10
func (c ConvertCheckIter[From, To]) For(walker func(element To) error) error
For takes elements retrieved by the iterator. Can be interrupt by returning ErrBreak
func (ConvertCheckIter[From, To]) ForEach ¶ added in v0.0.10
func (c ConvertCheckIter[From, To]) ForEach(walker func(element To))
ForEach FlatIter all elements retrieved by the iterator
func (ConvertCheckIter[From, To]) Next ¶
func (c ConvertCheckIter[From, To]) Next() (t To, ok bool)
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.
func (ConvertCheckIter[From, To]) Start ¶ added in v0.0.10
func (c ConvertCheckIter[From, To]) Start() (ConvertCheckIter[From, To], To, bool)
Start is used with for loop construct like 'for i, val, ok := i.Start(); ok; val, ok = i.Next() { }'
type ConvertFiltIter ¶ added in v0.0.9
type ConvertFiltIter[From, To any] struct { // contains filtered or unexported fields }
ConvertFiltIter iterator implementation that retrieves an element by the 'next' function, converts by the 'converter' and addition checks by the 'filter'. If the filter returns true then the converted element is returned as next.
func ConvertAndFilter ¶
func ConvertAndFilter[From, To any](next func() (From, bool), converter func(From) To, filter func(To) bool) ConvertFiltIter[From, To]
ConvertAndFilter additionally filters 'To' elements
func FilterAndConvert ¶
func FilterAndConvert[From, To any](next func() (From, bool), filter func(From) bool, converter func(From) To) ConvertFiltIter[From, To]
FilterAndConvert returns a stream that filters source elements and converts them
func FilterConvertFilter ¶
func FilterConvertFilter[From, To any](next func() (From, bool), filter func(From) bool, converter func(From) To, filterTo func(To) bool) ConvertFiltIter[From, To]
FilterConvertFilter filters source, converts, and filters converted elements
func (ConvertFiltIter[From, To]) For ¶ added in v0.0.9
func (c ConvertFiltIter[From, To]) For(walker func(element To) error) error
For takes elements retrieved by the iterator. Can be interrupt by returning ErrBreak
func (ConvertFiltIter[From, To]) ForEach ¶ added in v0.0.9
func (c ConvertFiltIter[From, To]) ForEach(walker func(element To))
ForEach FlatIter all elements retrieved by the iterator
func (ConvertFiltIter[From, To]) Next ¶ added in v0.0.9
func (c ConvertFiltIter[From, To]) Next() (t To, ok bool)
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.
func (ConvertFiltIter[From, To]) Start ¶ added in v0.0.10
func (c ConvertFiltIter[From, To]) Start() (ConvertFiltIter[From, To], To, bool)
Start is used with for loop construct like 'for i, val, ok := i.Start(); ok; val, ok = i.Next() { }'
type ConvertIter ¶
type ConvertIter[From, To any] struct { // contains filtered or unexported fields }
ConvertIter iterator implementation that retrieves an element by the 'next' function and converts by the 'converter'
func Convert ¶
func Convert[From, To any](next func() (From, bool), converter func(From) To) ConvertIter[From, To]
Convert instantiates an iterator that converts elements with a converter and returns them.
func PtrVal ¶ added in v0.0.10
func PtrVal[T any](next func() (*T, bool)) ConvertIter[*T, T]
PtrVal creates an iterator that transform pointers to the values referenced by those pointers. Nil pointers are transformet to zero values.
func (ConvertIter[From, To]) For ¶
func (c ConvertIter[From, To]) For(walker func(element To) error) error
For takes elements retrieved by the iterator. Can be interrupt by returning ErrBreak
func (ConvertIter[From, To]) ForEach ¶
func (c ConvertIter[From, To]) ForEach(walker func(element To))
ForEach FlatIter all elements retrieved by the iterator
func (ConvertIter[From, To]) Next ¶
func (c ConvertIter[From, To]) Next() (t To, ok bool)
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.
func (ConvertIter[From, To]) Start ¶ added in v0.0.10
func (c ConvertIter[From, To]) Start() (ConvertIter[From, To], To, bool)
Start is used with for loop construct like 'for i, val, ok := i.Start(); ok; val, ok = i.Next() { }'
type FiltIter ¶ added in v0.0.9
type FiltIter[T any] struct { // contains filtered or unexported fields }
FiltIter is the Iterator wrapper that provides filtering of elements by a Predicate.
func Filter ¶
Filter creates an iterator that checks elements by the 'filter' function and returns successful ones.
func (FiltIter[T]) For ¶ added in v0.0.9
For takes elements retrieved by the iterator. Can be interrupt by returning ErrBreak
func (FiltIter[T]) ForEach ¶ added in v0.0.9
func (f FiltIter[T]) ForEach(walker func(element T))
ForEach FlatIter all elements retrieved by the iterator
type FlatFilterIter ¶ added in v0.0.9
type FlatFilterIter[From, To any] struct { // contains filtered or unexported fields }
FlatFilterIter is the Iterator wrapper that converts an element to a slice with addition filtering of the element by a Predicate and iterates over the slice.
func FilterAndFlat ¶ added in v0.0.9
func FilterAndFlat[From, To any](next func() (From, bool), filter func(From) bool, flattener func(From) []To) *FlatFilterIter[From, To]
FilterAndFlat filters source elements and extracts slices of 'To' by the 'flattener' function
func FilterFlatFilter ¶ added in v0.0.9
func FilterFlatFilter[From, To any](next func() (From, bool), filterFrom func(From) bool, flattener func(From) []To, filterTo func(To) bool) *FlatFilterIter[From, To]
FilterFlatFilter filters source elements, extracts slices of 'To' by the 'flattener' function and filters extracted elements
func FlattAndFilter ¶
func FlattAndFilter[From, To any](next func() (From, bool), flattener func(From) []To, filterTo func(To) bool) *FlatFilterIter[From, To]
FlattAndFilter extracts slices of 'To' by the 'flattener' function and filters extracted elements
func (*FlatFilterIter[From, To]) For ¶ added in v0.0.9
func (i *FlatFilterIter[From, To]) For(walker func(element To) error) error
For takes elements retrieved by the iterator. Can be interrupt by returning ErrBreak
func (*FlatFilterIter[From, To]) ForEach ¶ added in v0.0.9
func (i *FlatFilterIter[From, To]) ForEach(walker func(element To))
ForEach FlatIter all elements retrieved by the iterator
func (*FlatFilterIter[From, To]) Next ¶ added in v0.0.9
func (i *FlatFilterIter[From, To]) Next() (t To, ok bool)
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.
func (*FlatFilterIter[From, To]) Start ¶ added in v0.0.10
func (i *FlatFilterIter[From, To]) Start() (*FlatFilterIter[From, To], To, bool)
Start is used with for loop construct like 'for i, val, ok := i.Start(); ok; val, ok = i.Next() { }'
type FlatIter ¶
type FlatIter[From, To any] struct { // contains filtered or unexported fields }
FlatIter is the Iterator wrapper that converts an element to a slice and iterates over the elements of that slice. For example, FlatIter can be used to iterate over all the elements of a multi-dimensional array as if it were a one-dimensional array ([][]int -> []int).
func Flat ¶ added in v0.0.8
Flat instantiates an iterator that extracts slices of 'To' by a flattener from elements of 'From' and flattens as one iterable collection of 'To' elements.
func (*FlatIter[From, To]) For ¶
For takes elements retrieved by the iterator. Can be interrupt by returning ErrBreak
func (*FlatIter[From, To]) ForEach ¶
func (i *FlatIter[From, To]) ForEach(walker func(element To))
ForEach FlatIter all elements retrieved by the iterator
type KeyValuer ¶
type KeyValuer[T, K, V any] struct { // contains filtered or unexported fields }
KeyValuer is the Iterator wrapper that converts an element to a key\value pair and iterates over these pairs
func ExtraKey ¶ added in v0.0.10
ExtraKey transforms iterable elements to key/value iterator based on applying key extractor to the elements
func ExtraValue ¶ added in v0.0.10
ExtraValue transforms iterable elements to key/value iterator based on applying value extractor to the elements
func KeyValue ¶ added in v0.0.10
func KeyValue[T any, K, V any](next func() (T, bool), keyExtractor func(T) K, valExtractor func(T) V) KeyValuer[T, K, V]
KeyValue transforms iterable elements to key/value iterator based on applying key, value extractors to the elements
func NewKeyValuer ¶
func NewKeyValuer[T any, K, V any](next func() (T, bool), keyExtractor func(T) K, valsExtractor func(T) V) KeyValuer[T, K, V]
NewKeyValuer creates instance of the KeyValuer
func (KeyValuer[T, K, V]) Next ¶
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.
func (KeyValuer[T, K, V]) Start ¶ added in v0.0.10
Start is used with for loop construct like 'for i, k, v, ok := i.Start(); ok; k, v, ok = i.Next() { }'
type MultipleKeyValuer ¶
type MultipleKeyValuer[T, K, V any] struct { // contains filtered or unexported fields }
MultipleKeyValuer is the Iterator wrapper that converts an element to a key\value pair and iterates over these pairs
func ExtraKeys ¶ added in v0.0.10
func ExtraKeys[T, K any](next func() (T, bool), keysExtractor func(T) []K) *MultipleKeyValuer[T, K, T]
ExtraKeys transforms iterable elements to key/value iterator based on applying key extractor to the elements
func ExtraVals ¶ added in v0.0.10
func ExtraVals[T, V any](next func() (T, bool), valsExtractor func(T) []V) *MultipleKeyValuer[T, T, V]
ExtraVals transforms iterable elements to key/value iterator based on applying values extractor to the elements
func KeyValues ¶ added in v0.0.10
func KeyValues[T, K, V any](next func() (T, bool), keyExtractor func(T) K, valsExtractor func(T) []V) *MultipleKeyValuer[T, K, V]
KeyValues transforms iterable elements to key/value iterator based on applying key, values extractor to the elements
func KeysValue ¶ added in v0.0.10
func KeysValue[T, K, V any](next func() (T, bool), keysExtractor func(T) []K, valExtractor func(T) V) *MultipleKeyValuer[T, K, V]
KeysValue transforms iterable elements to key/value iterator based on applying keys, value extractor to the elements
func KeysValues ¶ added in v0.0.10
func KeysValues[T, K, V any](next func() (T, bool), keysExtractor func(T) []K, valsExtractor func(T) []V) *MultipleKeyValuer[T, K, V]
KeysValues transforms iterable elements to key/value iterator based on applying multiple keys, values extractor to the elements
func NewMultipleKeyValuer ¶
func NewMultipleKeyValuer[T any, K, V any](next func() (T, bool), keysExtractor func(T) []K, valsExtractor func(T) []V) *MultipleKeyValuer[T, K, V]
NewMultipleKeyValuer creates instance of the MultipleKeyValuer
func (*MultipleKeyValuer[T, K, V]) Next ¶
func (kv *MultipleKeyValuer[T, K, V]) Next() (key K, value V, ok bool)
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.
func (*MultipleKeyValuer[T, K, V]) Start ¶ added in v0.0.10
func (kv *MultipleKeyValuer[T, K, V]) Start() (*MultipleKeyValuer[T, K, V], K, V, bool)
Start is used with for loop construct like 'for i, k, v, ok := i.Start(); ok; k, v, ok = i.Next() { }'
func (*MultipleKeyValuer[T, K, V]) Track ¶
func (kv *MultipleKeyValuer[T, K, V]) Track(traker func(key K, value V) error) error
Track takes key, value pairs retrieved by the iterator. Can be interrupt by returning ErrBreak
func (*MultipleKeyValuer[T, K, V]) TrackEach ¶
func (kv *MultipleKeyValuer[T, K, V]) TrackEach(traker func(key K, value V))
TrackEach takes all key, value pairs retrieved by the iterator
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package conv provides loop converation helpers
|
Package conv provides loop converation helpers |
Package convert provides loop converation helpers
|
Package convert provides loop converation helpers |
Package filter provides aliases for loop filtering helpers
|
Package filter provides aliases for loop filtering helpers |
Package first provides short aliases for loop functions for retrieving a first element
|
Package first provides short aliases for loop functions for retrieving a first element |
Package flat provides short aliases for loop functions
|
Package flat provides short aliases for loop functions |
Package group provides short aliases for functions that are used to group elements retrieved by a loop
|
Package group provides short aliases for functions that are used to group elements retrieved by a loop |
Package range_ provides alias for the slice.Range function
|
Package range_ provides alias for the slice.Range function |
Package sum provides sum.Of alias
|
Package sum provides sum.Of alias |