package convert import ( "github.com/hashicorp/go-cty/cty" ) func conversionToCapsule(inTy, outTy cty.Type, fn func(inTy cty.Type) func(cty.Value, cty.Path) (interface{}, error)) conversion { rawConv := fn(inTy) if rawConv == nil { return nil } return func(in cty.Value, path cty.Path) (cty.Value, error) { rawV, err := rawConv(in, path) if err != nil { return cty.NilVal, err } return cty.CapsuleVal(outTy, rawV), nil } } func conversionFromCapsule(inTy, outTy cty.Type, fn func(outTy cty.Type) func(interface{}, cty.Path) (cty.Value, error)) conversion { rawConv := fn(outTy) if rawConv == nil { return nil } return func(in cty.Value, path cty.Path) (cty.Value, error) { return rawConv(in.EncapsulatedValue(), path) } }