func TryConvert[T any]()

in azkustodata/value/value.go [94:123]


func TryConvert[T any](holder interface{}, p *pointerValue[T], v reflect.Value) bool {
	t := v.Type()

	if holder == nil || p.value == nil {
		v.Set(reflect.Zero(t))
		return true
	}

	if reflect.TypeOf(*p.value).ConvertibleTo(t) {
		v.Set(reflect.ValueOf(*p.value).Convert(t))
		return true
	}

	if reflect.TypeOf(p.value).ConvertibleTo(t) {
		v.Set(reflect.ValueOf(p.value).Convert(t))
		return true
	}

	if reflect.TypeOf(holder).ConvertibleTo(t) {
		v.Set(reflect.ValueOf(holder).Convert(t))
		return true
	}

	if reflect.TypeOf(&holder).ConvertibleTo(t) {
		v.Set(reflect.ValueOf(&holder).Convert(t))
		return true
	}

	return false
}