iterator

package
v0.0.10 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2022 License: Apache-2.0 Imports: 2 Imported by: 3

Documentation

Index

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]) Next added in v0.0.8

func (c *Chainer[T]) Next() (next T, ok bool)

func (*Chainer[T]) Reverse added in v0.0.9

func (c *Chainer[T]) Reverse() (rev SeIterator[T], ok bool)

Reverse implements Reverser.

func (*Chainer[T]) SizeHint added in v0.0.9

func (c *Chainer[T]) SizeHint() int

SizeHint implements SizeHinter.

type ChanIter

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

func FromChannel

func FromChannel[T any](channel <-chan T) *ChanIter[T]

FromChannel makes ChanIter associated with given channel. To signal end of iterator, close passed channel.

*ChanIter[T] only implements SeIterator[T].

func (*ChanIter[T]) Next

func (ci *ChanIter[T]) Next() (next T, ok bool)

Next earns next element from this iterator. Next blocks until internal channel receives.

func (*ChanIter[T]) ToIterator added in v0.0.9

func (ci *ChanIter[T]) ToIterator() Iterator[T]

type DeIterator

type DeIterator[T any] interface {
	Nexter[T]
	NextBacker[T]
}

Doubly ended iterator.

type EnumerateEnt added in v0.0.9

type EnumerateEnt[T any] struct {
	Count int
	Next  T
}

type Enumerator added in v0.0.9

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

func Enumerate added in v0.0.9

func Enumerate[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]) Next

func (e Excluder[T]) Next() (next T, ok bool)

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

func (iter Excluder[T]) ReverseRaw() (rev *Excluder[T], ok bool)

func (Excluder[T]) SizeHint added in v0.0.9

func (iter Excluder[T]) SizeHint() int

type Iterator

type Iterator[T any] struct {
	SeIterator[T]
}

func (Iterator[T]) Chain added in v0.0.8

func (iter Iterator[T]) Chain(z SeIterator[T]) Iterator[T]

func (Iterator[T]) Collect

func (iter Iterator[T]) Collect() []T

func (Iterator[T]) Exclude

func (iter Iterator[T]) Exclude(excluder func(T) bool) Iterator[T]

func (Iterator[T]) Find added in v0.0.9

func (iter Iterator[T]) Find(predicate func(T) bool) (v T, found bool)

func (Iterator[T]) ForEach

func (iter Iterator[T]) ForEach(each func(T))

func (Iterator[T]) Map added in v0.0.9

func (iter Iterator[T]) Map(mapper func(T) T) Iterator[T]

func (Iterator[T]) MustNext added in v0.0.9

func (iter Iterator[T]) MustNext() T

func (Iterator[T]) MustReverse added in v0.0.9

func (iter Iterator[T]) MustReverse() (rev Iterator[T])

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]) Reverse

func (iter Iterator[T]) Reverse() (rev Iterator[T], ok bool)

func (Iterator[T]) Select

func (iter Iterator[T]) Select(selector func(T) bool) Iterator[T]

func (Iterator[T]) SizeHint added in v0.0.9

func (iter Iterator[T]) SizeHint() int

func (Iterator[T]) SkipN

func (iter Iterator[T]) SkipN(n int) Iterator[T]

func (Iterator[T]) SkipWhile

func (iter Iterator[T]) SkipWhile(skipIf func(T) bool) Iterator[T]

func (Iterator[T]) TakeN

func (iter Iterator[T]) TakeN(n int) Iterator[T]

func (Iterator[T]) TakeWhile

func (iter Iterator[T]) TakeWhile(takeIf func(T) bool) Iterator[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 FromFixedList added in v0.0.9

func FromFixedList[T any](list *listparam.List[T]) *ListIterDe[T]

FromFixedList makes *ListIterDe[T] from list.List[T]. Range is fixed at the time FromFixedList 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.

func (*ListIterDe[T]) ToIterator added in v0.0.9

func (li *ListIterDe[T]) ToIterator() Iterator[T]

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 FromList

func FromList[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)

func (*ListIterSe[T]) ToIterator added in v0.0.9

func (li *ListIterSe[T]) ToIterator() Iterator[T]

type Mapper

type Mapper[T, U any] struct {
	// contains filtered or unexported fields
}

Mapper applies mapper function.

func Map

func Map[T, U any](iter SeIterator[T], mapper func(T) U) Mapper[T, U]

func (Mapper[T, U]) Next

func (m Mapper[T, U]) Next() (next U, ok bool)

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

func (iter Mapper[T, U]) ReverseRaw() (rev *Mapper[T, U], ok bool)

func (Mapper[T, U]) SizeHint added in v0.0.9

func (iter Mapper[T, U]) SizeHint() int

func (Mapper[T, U]) ToIterator added in v0.0.9

func (m Mapper[T, U]) ToIterator() Iterator[U]

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]) Next

func (s *NSkipper[T]) Next() (next T, ok bool)

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

func (iter NSkipper[T]) ReverseRaw() (rev *NSkipper[T], ok bool)

func (*NSkipper[T]) SizeHint added in v0.0.9

func (iter *NSkipper[T]) SizeHint() int

type NTaker

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

func NewNTaker

func NewNTaker[T any](iter SeIterator[T], n int) *NTaker[T]

func (*NTaker[T]) Next

func (s *NTaker[T]) Next() (next T, ok bool)

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

func (iter NTaker[T]) ReverseRaw() (rev *NTaker[T], ok bool)

func (*NTaker[T]) SizeHint added in v0.0.9

func (t *NTaker[T]) SizeHint() int

type NextBacker

type NextBacker[T any] interface {
	NextBack() (next T, ok bool)
}

type Nexter

type Nexter[T any] interface {
	Next() (next T, ok bool)
}

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.

func NewRange added in v0.0.9

func NewRange(start, end int) *Range

func (*Range) Next added in v0.0.9

func (r *Range) Next() (next int, ok bool)

func (*Range) NextBack added in v0.0.9

func (r *Range) NextBack() (next int, ok bool)

func (*Range) SizeHint added in v0.0.9

func (r *Range) SizeHint() int

func (*Range) ToIterator added in v0.0.9

func (r *Range) ToIterator() Iterator[int]

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

type SeIterator[T any] interface {
	Nexter[T]
}

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]) Next

func (s Selector[T]) Next() (next T, ok bool)

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

func (iter Selector[T]) ReverseRaw() (rev *Selector[T], ok bool)

func (Selector[T]) SizeHint added in v0.0.9

func (iter Selector[T]) SizeHint() int

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 FromSlice

func FromSlice[T any](sl []T) *SliceIterDe[T]

FromSlice 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.

func (*SliceIterDe[T]) ToIterator added in v0.0.9

func (si *SliceIterDe[T]) ToIterator() Iterator[T]

type TwoEleTuple added in v0.0.9

type TwoEleTuple[T any, U any] struct {
	Former T
	Latter U
}

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 Zipper added in v0.0.7

type Zipper[T any, U any] struct {
	// contains filtered or unexported fields
}

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.

func (Zipper[T, U]) SizeHint added in v0.0.9

func (z Zipper[T, U]) SizeHint() int

Jump to

Keyboard shortcuts

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