github.com/storacha/go-ucanto@v0.7.2/core/schema/mapped.go (about)

     1  package schema
     2  
     3  import "github.com/storacha/go-ucanto/core/result/failure"
     4  
     5  type mapped[I, O, O2 any] struct {
     6  	reader    Reader[I, O]
     7  	converter func(O) (O2, failure.Failure)
     8  }
     9  
    10  func (m mapped[I, O, O2]) Read(i I) (O2, failure.Failure) {
    11  	o, err := m.reader.Read(i)
    12  	if err != nil {
    13  		var o2 O2
    14  		return o2, err
    15  	}
    16  	return m.converter(o)
    17  }
    18  
    19  func Mapped[I, O, O2 any](reader Reader[I, O], converter func(O) (O2, failure.Failure)) Reader[I, O2] {
    20  	return mapped[I, O, O2]{reader, converter}
    21  }