Documentation
¶
Index ¶
- func Fold[T, U any](iter SeIterator[T], reducer func(accumulator U, next T) U, inital U) U
- type Chainer
- type ChanIter
- type Chunker
- type DeIterator
- type EnumerateEnt
- type Enumerator
- type Excluder
- type Iterator
- func Chunks[T any](sl []T, size uint) Iterator[[]T]
- func Enumerate[T any](iter SeIterator[T]) Iterator[EnumerateEnt[T]]
- func FromChannel[T any](channel <-chan T) Iterator[T]
- func FromFixedList[T any](list *listparam.List[T]) Iterator[T]
- func FromList[T any](list *listparam.List[T]) Iterator[T]
- func FromMap[T comparable, U any](m map[T]U, keySortOption func(keys []T) []T) Iterator[TwoEleTuple[T, U]]
- func FromRange(start, end int) Iterator[int]
- func FromSlice[T any](sl []T) Iterator[T]
- func Map[T, U any](iter SeIterator[T], mapper func(T) U) Iterator[U]
- func Windows[T any](sl []T, width uint) Iterator[[]T]
- func (iter Iterator[T]) Chain(z SeIterator[T]) Iterator[T]
- func (iter Iterator[T]) Collect() []T
- func (iter Iterator[T]) Exclude(excluder func(T) bool) Iterator[T]
- func (iter Iterator[T]) Find(predicate func(T) bool) (v T, found bool)
- func (iter Iterator[T]) ForEach(each func(T))
- func (iter Iterator[T]) Map(mapper func(T) T) Iterator[T]
- func (iter Iterator[T]) MustNext() T
- func (iter Iterator[T]) MustReverse() (rev Iterator[T])
- func (iter Iterator[T]) Reduce(reducer func(accumulator T, next T) T) T
- func (iter Iterator[T]) Reverse() (rev Iterator[T], ok bool)
- func (iter Iterator[T]) Select(selector func(T) bool) Iterator[T]
- func (iter Iterator[T]) SizeHint() int
- func (iter Iterator[T]) SkipN(n int) Iterator[T]
- func (iter Iterator[T]) SkipWhile(skipIf func(T) bool) Iterator[T]
- func (iter Iterator[T]) TakeN(n int) Iterator[T]
- func (iter Iterator[T]) TakeWhile(takeIf func(T) bool) Iterator[T]
- func (iter Iterator[T]) Unwrap() SeIterator[T]
- type ListIterDe
- type ListIterSe
- type MapIterDe
- type Mapper
- type NSkipper
- type NTaker
- type NextBacker
- type Nexter
- type Range
- type ReversedDeIter
- type Reverser
- type SameTyMapper
- type SeIterator
- type Selector
- type SizeHinter
- type SliceIterDe
- type TwoEleTuple
- type Unwrapper
- type WhileSkipper
- type WhileTaker
- type Windower
- type Zipper
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Fold ¶ added in v0.0.9
func Fold[T, U any](iter SeIterator[T], reducer func(accumulator U, next T) U, inital U) U
Types ¶
type Chainer ¶ added in v0.0.8
type Chainer[T any] struct { // contains filtered or unexported fields }
func NewChainer ¶ added in v0.0.8
func NewChainer[T any](former SeIterator[T], latter SeIterator[T]) *Chainer[T]
func (*Chainer[T]) Reverse ¶ added in v0.0.9
func (c *Chainer[T]) Reverse() (rev SeIterator[T], ok bool)
Reverse implements Reverser.
type ChanIter ¶
type ChanIter[T any] struct { // contains filtered or unexported fields }
func NewChanIter ¶ added in v0.0.11
NewChanIter makes ChanIter associated with given channel. To signal end of iterator, close passed channel.
*ChanIter[T] only implements SeIterator[T].
type Chunker ¶ added in v0.0.12
type Chunker[T any] struct { // contains filtered or unexported fields }
func NewChunker ¶ added in v0.0.12
type DeIterator ¶
type DeIterator[T any] interface { Nexter[T] NextBacker[T] }
Doubly ended iterator.
type EnumerateEnt ¶ added in v0.0.9
type Enumerator ¶ added in v0.0.9
type Enumerator[T any] struct { // contains filtered or unexported fields }
func NewEnumerator ¶ added in v0.0.11
func NewEnumerator[T any](iter SeIterator[T]) *Enumerator[T]
func (*Enumerator[T]) Next ¶ added in v0.0.9
func (e *Enumerator[T]) Next() (next EnumerateEnt[T], ok bool)
func (Enumerator[T]) SizeHint ¶ added in v0.0.9
func (iter Enumerator[T]) SizeHint() int
type Excluder ¶
type Excluder[T any] struct { // contains filtered or unexported fields }
func NewExcluder ¶
func NewExcluder[T any](iter SeIterator[T], excluder func(T) bool) Excluder[T]
func (Excluder[T]) Reverse ¶ added in v0.0.9
func (iter Excluder[T]) Reverse() (rev SeIterator[T], ok bool)
func (Excluder[T]) ReverseRaw ¶ added in v0.0.9
type Iterator ¶
type Iterator[T any] struct { SeIterator[T] }
func Enumerate ¶ added in v0.0.9
func Enumerate[T any](iter SeIterator[T]) Iterator[EnumerateEnt[T]]
func FromChannel ¶
func FromMap ¶ added in v0.0.17
func FromMap[T comparable, U any](m map[T]U, keySortOption func(keys []T) []T) Iterator[TwoEleTuple[T, U]]
func Map ¶
func Map[T, U any](iter SeIterator[T], mapper func(T) U) Iterator[U]
func (Iterator[T]) Chain ¶ added in v0.0.8
func (iter Iterator[T]) Chain(z SeIterator[T]) Iterator[T]
func (Iterator[T]) MustReverse ¶ added in v0.0.9
func (Iterator[T]) Reduce ¶ added in v0.0.9
func (iter Iterator[T]) Reduce(reducer func(accumulator T, next T) T) T
func (Iterator[T]) Unwrap ¶ added in v0.0.9
func (iter Iterator[T]) Unwrap() SeIterator[T]
type ListIterDe ¶ added in v0.0.9
type ListIterDe[T any] struct { // contains filtered or unexported fields }
Doubly ended iterator made from List.
func NewListIterDe ¶ added in v0.0.11
func NewListIterDe[T any](list *listparam.List[T]) *ListIterDe[T]
NewListIterDe makes *ListIterDe[T] from list.List[T]. Range is fixed at the time NewListIterDe returns. Mutating passed list outside this iterator may cause undefined behavior.
func (*ListIterDe[T]) Next ¶ added in v0.0.9
func (li *ListIterDe[T]) Next() (next T, ok bool)
func (*ListIterDe[T]) NextBack ¶ added in v0.0.9
func (li *ListIterDe[T]) NextBack() (next T, ok bool)
func (*ListIterDe[T]) SizeHint ¶ added in v0.0.9
func (li *ListIterDe[T]) SizeHint() int
SizeHint hints size of remaining elements. Size would be incorrect if and only if new element is inserted into between head and tail of the iterator.
type ListIterSe ¶ added in v0.0.9
type ListIterSe[T any] struct { // contains filtered or unexported fields }
ListIterSe is monotonic list iterator. It only advances to tail. ListIterSe is not fused, its Next might return ok=true after it returns ok=false. This happens when passed list grows its tail afterwards.
func NewListIterSe ¶ added in v0.0.11
func NewListIterSe[T any](list *listparam.List[T]) *ListIterSe[T]
func (*ListIterSe[T]) Next ¶ added in v0.0.9
func (li *ListIterSe[T]) Next() (next T, ok bool)
type MapIterDe ¶ added in v0.0.17
type MapIterDe[T comparable, U any] struct { // contains filtered or unexported fields }
MapIterDe is doubly ended iterator, which is made from map.
func NewMapIterDe ¶ added in v0.0.17
func NewMapIterDe[T comparable, U any](m map[T]U, keySortOption func(keys []T) []T) *MapIterDe[T, U]
NewMapIterDe makes MapIterDe[T, U] from map[T]U.
m should not be mutated after the return of this function. Otherwise behavior is undefined.
keySortOption is used to sort its iteration order. if nil, order is random (This is default behavior of range expression applied to a map, as per the Go programming language specification.)
func (*MapIterDe[T, U]) Next ¶ added in v0.0.17
func (mi *MapIterDe[T, U]) Next() (next TwoEleTuple[T, U], ok bool)
func (*MapIterDe[T, U]) NextBack ¶ added in v0.0.17
func (mi *MapIterDe[T, U]) NextBack() (next TwoEleTuple[T, U], ok bool)
func (*MapIterDe[T, U]) SizeHint ¶ added in v0.0.17
SizeHint returns size of remaining elements. This is not an actual count of non-used elements in underlying map, since it ignores keys added after return of NewMapIterDe.
Internally, MapIterDe stores keys of map as []T, in NewMapIterDe, and consumes the slice from both end.
type Mapper ¶
type Mapper[T, U any] struct { // contains filtered or unexported fields }
Mapper applies mapper function.
func NewMapper ¶ added in v0.0.11
func NewMapper[T, U any](iter SeIterator[T], mapper func(T) U) Mapper[T, U]
func (Mapper[T, U]) Reverse ¶ added in v0.0.9
func (iter Mapper[T, U]) Reverse() (rev SeIterator[U], ok bool)
func (Mapper[T, U]) ReverseRaw ¶ added in v0.0.9
type NSkipper ¶
type NSkipper[T any] struct { // contains filtered or unexported fields }
func NewNSkipper ¶
func NewNSkipper[T any](iter SeIterator[T], n int) *NSkipper[T]
func (NSkipper[T]) Reverse ¶ added in v0.0.9
func (iter NSkipper[T]) Reverse() (rev SeIterator[T], ok bool)
func (NSkipper[T]) ReverseRaw ¶ added in v0.0.9
type NTaker ¶
type NTaker[T any] struct { // contains filtered or unexported fields }
func (NTaker[T]) Reverse ¶ added in v0.0.9
func (iter NTaker[T]) Reverse() (rev SeIterator[T], ok bool)
func (NTaker[T]) ReverseRaw ¶ added in v0.0.9
type NextBacker ¶
type Range ¶ added in v0.0.9
type Range struct {
// contains filtered or unexported fields
}
Range is numeric range iterator which iterates over contiguous number in range of [start, end).
Each Next call advances iterator 1 ahead to its tail. If you need to skip some number, use with Exclude or Map.
type ReversedDeIter ¶ added in v0.0.9
type ReversedDeIter[T any] struct { DeIterator[T] }
func (ReversedDeIter[T]) Next ¶ added in v0.0.9
func (rev ReversedDeIter[T]) Next() (next T, ok bool)
func (ReversedDeIter[T]) NextBack ¶ added in v0.0.9
func (rev ReversedDeIter[T]) NextBack() (next T, ok bool)
func (ReversedDeIter[T]) Reverse ¶ added in v0.0.9
func (iter ReversedDeIter[T]) Reverse() (rev SeIterator[T], ok bool)
Reverse implements Reverser[T]. This simply unwrap iterator.
func (ReversedDeIter[T]) SizeHint ¶ added in v0.0.9
func (iter ReversedDeIter[T]) SizeHint() int
type Reverser ¶
type Reverser[T any] interface { Reverse() (rev SeIterator[T], ok bool) }
type SameTyMapper ¶ added in v0.0.9
type SameTyMapper[T any] struct { // contains filtered or unexported fields }
SameTyMapper applies mapper function that returns value of same type to input.
func NewSameTyMapper ¶ added in v0.0.9
func NewSameTyMapper[T any](iter SeIterator[T], mapper func(T) T) SameTyMapper[T]
func (SameTyMapper[T]) Next ¶ added in v0.0.9
func (m SameTyMapper[T]) Next() (next T, ok bool)
func (SameTyMapper[T]) Reverse ¶ added in v0.0.9
func (iter SameTyMapper[T]) Reverse() (rev SeIterator[T], ok bool)
func (SameTyMapper[T]) ReverseRaw ¶ added in v0.0.9
func (iter SameTyMapper[T]) ReverseRaw() (rev *SameTyMapper[T], ok bool)
func (SameTyMapper[T]) SizeHint ¶ added in v0.0.9
func (iter SameTyMapper[T]) SizeHint() int
type SeIterator ¶ added in v0.0.9
Singly ended iterator.
func MustReverse ¶ added in v0.0.9
func MustReverse[T any](iter SeIterator[T]) (rev SeIterator[T])
func Reverse ¶ added in v0.0.9
func Reverse[T any](iter SeIterator[T]) (rev SeIterator[T], ok bool)
type Selector ¶
type Selector[T any] struct { // contains filtered or unexported fields }
func NewSelector ¶
func NewSelector[T any](iter SeIterator[T], selector func(T) bool) Selector[T]
func (Selector[T]) Reverse ¶ added in v0.0.9
func (iter Selector[T]) Reverse() (rev SeIterator[T], ok bool)
func (Selector[T]) ReverseRaw ¶ added in v0.0.9
type SizeHinter ¶ added in v0.0.9
type SizeHinter interface {
SizeHint() int
}
type SliceIterDe ¶ added in v0.0.9
type SliceIterDe[T any] struct { // contains filtered or unexported fields }
SliceIterDe is doubly ended iterator, which is made of slice.
func NewSliceIterDe ¶ added in v0.0.11
func NewSliceIterDe[T any](sl []T) *SliceIterDe[T]
NewSliceIterDe makes SliceIterDe[T] from []T.
func (*SliceIterDe[T]) Next ¶ added in v0.0.9
func (si *SliceIterDe[T]) Next() (next T, ok bool)
func (*SliceIterDe[T]) NextBack ¶ added in v0.0.9
func (si *SliceIterDe[T]) NextBack() (next T, ok bool)
func (*SliceIterDe[T]) SizeHint ¶ added in v0.0.9
func (si *SliceIterDe[T]) SizeHint() int
SizeHint returns size of remaining elements.
type TwoEleTuple ¶ added in v0.0.9
type Unwrapper ¶ added in v0.0.9
type Unwrapper[T any] interface { Unwrap() SeIterator[T] }
type WhileSkipper ¶
type WhileSkipper[T any] struct { // contains filtered or unexported fields }
func NewWhileSkipper ¶
func NewWhileSkipper[T any](iter SeIterator[T], skipIf func(T) bool) *WhileSkipper[T]
func (*WhileSkipper[T]) Next ¶
func (s *WhileSkipper[T]) Next() (next T, ok bool)
func (WhileSkipper[T]) Reverse ¶ added in v0.0.9
func (iter WhileSkipper[T]) Reverse() (rev SeIterator[T], ok bool)
func (WhileSkipper[T]) ReverseRaw ¶ added in v0.0.9
func (iter WhileSkipper[T]) ReverseRaw() (rev *WhileSkipper[T], ok bool)
func (WhileSkipper[T]) SizeHint ¶ added in v0.0.9
func (s WhileSkipper[T]) SizeHint() int
SizeHint implements SizeHinter.
type WhileTaker ¶
type WhileTaker[T any] struct { // contains filtered or unexported fields }
func NewWhileTaker ¶
func NewWhileTaker[T any](iter SeIterator[T], takeIf func(T) bool) *WhileTaker[T]
func (*WhileTaker[T]) Next ¶
func (s *WhileTaker[T]) Next() (next T, ok bool)
func (WhileTaker[T]) Reverse ¶ added in v0.0.9
func (iter WhileTaker[T]) Reverse() (rev SeIterator[T], ok bool)
func (WhileTaker[T]) ReverseRaw ¶ added in v0.0.9
func (iter WhileTaker[T]) ReverseRaw() (rev *WhileTaker[T], ok bool)
func (WhileTaker[T]) SizeHint ¶ added in v0.0.9
func (t WhileTaker[T]) SizeHint() int
type Windower ¶ added in v0.0.12
type Windower[T any] struct { // contains filtered or unexported fields }
func NewWindower ¶ added in v0.0.12
type Zipper ¶ added in v0.0.7
func Zip ¶ added in v0.0.9
func Zip[T any, U any](iterFormer SeIterator[T], iterLatter SeIterator[U]) Zipper[T, U]
func (Zipper[T, U]) Next ¶ added in v0.0.7
func (z Zipper[T, U]) Next() (next TwoEleTuple[T, U], ok bool)
func (Zipper[T, U]) Reverse ¶ added in v0.0.9
func (z Zipper[T, U]) Reverse() (rev SeIterator[TwoEleTuple[T, U]], ok bool)
Reverse implements Reverser. Reverse succeeds only when both are reversible and same size.