package buf2d import ( "fmt" "reflect" ) func limit(v, min, max int) int { return getmax(getmin(v, max), min) } func getmax(x, y int) int { if x > y { return x } return y } func getmin(x, y int) int { if x < y { return x } return y } func MakeDefaultStringFunc[T any]() func(T) string { if reflect.TypeOf(new(T)).Elem() == reflect.TypeOf(new(rune)).Elem() { return func(value T) string { return string((interface{}(value)).(rune)) } } else if reflect.TypeOf(new(T)).Elem() == reflect.TypeOf(new(string)).Elem() { return func(value T) string { return (interface{}(value)).(string) } } return func(value T) string { return fmt.Sprintf("%v", value) } }