You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

mapper.go 535 B

2 years ago
123456789101112131415161718192021222324252627
  1. package iterator
  2. type Mapper[TSrc any, TDst any] struct {
  3. srcIter Iterator[TSrc]
  4. mapper func(TSrc) (TDst, error)
  5. }
  6. func (i *Mapper[TSrc, TDst]) MoveNext() (TDst, error) {
  7. src, err := i.srcIter.MoveNext()
  8. if err != nil {
  9. var ret TDst
  10. return ret, err
  11. }
  12. return i.mapper(src)
  13. }
  14. func (i *Mapper[TSrc, TDst]) Close() {
  15. i.srcIter.Close()
  16. }
  17. func Map[TSrc any, TDst any](srcIter Iterator[TSrc], mapper func(src TSrc) (TDst, error)) *Mapper[TSrc, TDst] {
  18. return &Mapper[TSrc, TDst]{
  19. srcIter: srcIter,
  20. mapper: mapper,
  21. }
  22. }