type AllowCompare interface {  
   ~int | ~int8 | ~int16 | ~int32 | ~int64 | ~string | ~float32 | ~float64  
}  
  
func IsSubSlice[T AllowCompare](parent, sub []T) bool {  
   dst := make(map[T]bool, len(parent))  
   for _, v := range parent {  
      dst[v] = true  
   }  
  
   for _, t := range sub {  
      if v := dst[t]; !v {  
         return false  
      }  
   }  
  
   return true  
}  
  
func InSlice[T AllowCompare](src []T, dst T) bool {  
   for _, t := range src {  
      if t == dst {  
         return true  
      }  
   }  
   return false  
}