Files
YaeMikoBot/utils/utils.go
2026-02-16 22:39:36 +03:00

62 lines
942 B
Go

package utils
import (
"fmt"
"math/rand/v2"
"reflect"
"strconv"
)
func RandRange(min, max int) int {
return rand.IntN(max-min) + min
}
func Min(a, b int) int {
if a < b {
return a
}
return b
}
func Max(a, b int) int {
if a > b {
return a
}
return b
}
func Map[T, V any](ts []T, fn func(T) V) []V {
result := make([]V, len(ts))
for i, t := range ts {
result[i] = fn(t)
}
return result
}
// Deprecated
func TypedSliceToAny[S any](s []S) []any {
out := make([]any, len(s))
for i := range s {
out[i] = s[i]
}
return out
}
func AppendToInt[S any](v int, s []S) []any {
out := make([]any, 1, len(s)+1)
out[0] = v
out = append(out, TypedSliceToAny(s)...)
return out
}
func StringToInt(s string) int {
i, err := strconv.Atoi(s)
if err != nil {
return -1
}
return i
}
func AnyToString[A any](a A) string {
return fmt.Sprintf("%v", a)
}
func IsDirty[T any](a T, b T) bool {
return !reflect.DeepEqual(a, b)
}