slices.Contains を使用しようとして、コンパイルエラーになったので、少し中身を追ってみた
以下が、実際の実装部分

slices.go
func Contains[S ~[]E, E comparable](s S, v E) bool {
	return Index(s, v) >= 0
}

Genericsを使用していて、EcomparableS はその E の Sliceかー。
では、S ~[]E~ とはなんだろうか?

以下 ChatGPT さんの回答

S ~[]E の表記は、Goの新しいジェネリクス機能において、型Sが型Eのスライスであるという制約を示します。この制約は、ジェネリクス関数やジェネリクス型を定義する際に使用されます。

~ 演算子は、“型の等価性"を示すために使用されます。具体的には、S[]E という具体的な型であるか、それに等価な型(例えば、型エイリアスなど)である必要があります。

例えば、以下のような型があるとします:

type MyInt int
type MySlice []MyInt

この場合、Contains[MySlice, MyInt] のように関数を呼び出すことができます。なぜなら、MySlice[]MyInt に等価であり、MyIntint に等価だからです。

この ~ 演算子と型制約は、Goのジェネリクスが提供する強力な型安全性を維持する一方で、柔軟性も提供します。それによって、コンパイル時に型の不一致や他の型関連のエラーを防ぐことができます。

~ は それに等価な型という制約 comparable な 型の Slice のようなものは許す みたいな感じか

なるほど