code: func Float64ToUintValueFunc() mapstructure.DecodeHookFunc {
  	return func(
  		f reflect.Type,
  		t reflect.Type,
  		data interface{}) (interface{}, error) {
  		if f.Kind() != reflect.Float64 {
  			return data, nil
  		}
  
  		val := UintValue{}
  		if t != reflect.TypeOf(val) {
  			return data, nil
  		}
  
  		fv := data.(float64)
  		if fv < 0 {
  			return nil, fmt.Errorf("value cannot be negative")
  		}
  
  		// The standard guarantees at least this, and this is fine for
  		// values we expect to use in configs vs. being fancy with the
  		// machine's size for uint.
  		if fv > (1<<32 - 1) {
  			return nil, fmt.Errorf("value is too large")
  		}
  
  		val.v = new(uint)
  		*(val.v) = (uint)(fv)
  		return val, nil
  	}
  }
docs: // Float64ToUintValueFunc is a mapstructure hook that looks for an incoming
  // float64 mapped to a UintValue and does the translation.