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 }