初心者には絶対やさしくないわ・・・
Javaみたいに抽象データ型をList<Int>とかSet<String>とかで表現したいのに
protocolがジェネリクスパラメータに対応してなくてAssociated type?でしか拡張できないから
関数側でwhereとか使って型の条件式を記述しなくちゃいけない(だるいけどstructやclassでサンクを作るという手もある)

C++みたいに関数をコンパイラレベルで具象型に特殊化できるようにするためなんだろうけど
カジュアルにやりたいのにしんどい仕組みを強要されるのはつらい