github.com/nevalang/neva@v0.23.1-0.20240507185603-7696a9bb8dda/internal/runtime/funcs/int_decr.go (about) 1 package funcs 2 3 import ( 4 "context" 5 6 "github.com/nevalang/neva/internal/runtime" 7 ) 8 9 type intDecr struct{} 10 11 func (i intDecr) Create(io runtime.FuncIO, _ runtime.Msg) (func(context.Context), error) { 12 nIn, err := io.In.Port("n") 13 if err != nil { 14 return nil, err 15 } 16 17 nOut, err := io.Out.Port("n") 18 if err != nil { 19 return nil, err 20 } 21 22 return func(ctx context.Context) { 23 var n runtime.Msg 24 25 for { 26 select { 27 case <-ctx.Done(): 28 return 29 case n = <-nIn: 30 } 31 32 select { 33 case <-ctx.Done(): 34 return 35 case nOut <- runtime.NewIntMsg(n.Int() - 1): 36 } 37 } 38 }, nil 39 }