У меня есть протокол, который я определил так:
protocol MyProtocol {
   ...
}
У меня также есть общая структура:
struct MyStruct <T>  {
    ...
}
Наконец, у меня есть общая функция:
func myFunc <T> (s: MyStruct<T>) -> T? {
   ...
}
Я бы хотел проверить внутри функции, если тип T соответствует MyProtocol. По существу, я хотел бы иметь возможность делать (~ псевдокод):
let conforms = T.self is MyProtocol
Но это вызывает ошибку компилятора:
error: cannot downcast from 'T.Type' to [email protected] protocol type 'MyProtocol'
   let conforms = T.self is MyProtocol
                  ~~~~~~ ^  ~~~~~~~~~~
Я также пробовал варианты, такие как T.self is MyProtocol.self, T is MyProtocol и используя == вместо is. До сих пор я никуда не денусь. Любые идеи?
