как применять расширение только некоторые специализации универсального типа?

Есть ли способ, чтобы применить расширение к универсальному типу, так что он соответствует протоколу, когда это расширение будет действовать только для определенной специализации универсального типа?

Например, рассмотрим такой протокол, который возвращает словарь подсчета частоты значений, содержащихся в экземпляре соответствующего протокола:

// a type conforming to this protocol should return a dictionary// which counts the frequencies of values contained by the type instanceprotocol ConvertibleToFrequencyDictionary {   typealias ItemType   func dictionaryCountingFrequencies<ItemType:Hashable>() -> Dictionary<ItemType,Int>}
dictionaryCountingFrequencies

Поскольку значения подсчитываются должны служить в качестве ключей в словаре, значения должны быть такого типа, который соответствует Hashable. Это выражается ограничение типа в определении универсального метода. (Я не вижу способа определить ограничение типа непосредственно на соответствующий тип, например, в "typealias" декларации.)

Теперь рассмотрим это расширение на массив, предназначенный, чтобы обеспечить соответствие протокола:

extension Array : ConvertibleToFrequencyDictionary {  typealias ItemType=Element  func dictionaryCountingFrequencies<ItemType:Hashable>() -> Dictionary<ItemType,Int> {    var valueToCount = Dictionary<ItemType,Int>()    for item in self {      if let existingCount = valueToCount[item] {        valueToCount.updateValue(value: existingCount + 1, forKey: item)      } else {        valueToCount.updateValue(value: 1, forKey: item)      }    }    return valueToCount;  }}
Array<T:Hashable>

Это должно вернуть частот каждого отдельного значения в массиве. Но, конечно, поскольку эти значения должны быть hashable, это расширение должно работать только тогда, когда его применяют для .

Array<Int>

Но это не работает , хотя Инт-это Hashable.

Почему нет? Если вы пишете расширение на универсальный тип, следует, что расширение сможет работать на всех возможных специализация универсального типа?