package values // FirstNonZero will return the first non zero value. If none exists, // it returns the zero value. func FirstNonZero[T comparable](vals ...T) T { var zeroT T for _, v := range vals { if v != zeroT { return v } } return zeroT } // CountNonZero returns the count of items that are non zero func CountNonZero[T comparable](vals ...T) (count int) { var zeroT T for _, v := range vals { if v != zeroT { count++ } } return count }