Как я могу протестировать тип (не экземпляр) для Equatable?

Из другого вопроса здесь, на SO о тестировании на соответствие протоколу, это решение...

public class Foo<TItem> {

    final public var items:[TItem] = [] {
        didSet{

            // This is allowed
            if TItem.self is SomeProtocol.Type {

            }
            else{
            }
        }
    }
}

Однако из-за собственных требований это не разрешено...

public class Foo<TItem> {

    final public var items:[TItem] = [] {
        didSet{

            // This is NOT allowed
            if TItem.self is Equatable.Type {
                ...update based on eqality...
            }
            else{
                ...process en masse since we can't check for equality...
            }
        }
    }
}

Итак, как я могу написать приведенное выше, чтобы я мог проверить соответствие и соответствующим образом обработать его?


person Mark A. Donohoe    schedule 04.10.2018    source источник