I'm having issues using associated type as protocol:
protocol Searchable{    
    func matches(text: String) -> Bool
}
protocol ArticleProtocol: Searchable {
    var title: String {get set}
}
extension ArticleProtocol {
    func matches(text: String) -> Bool {
        return title.containsString(text)
    }
}
struct FirstArticle: ArticleProtocol {
      var title: String = ""
}
struct SecondArticle: ArticleProtocol {
      var title: String = ""
}
protocol SearchResultsProtocol: class {    
    associatedtype T: Searchable
}
When I try to implement search results protocol, I get compile issue:
"type SearchArticles does not conform to protocol SearchResultsProtocol"
class SearchArticles: SearchResultsProtocol {
   typealias T = ArticleProtocol
}
As I understand, it happens because T in SearchArticles class is not from concrete type (struct in that example), but from protocol type.
Is there a way to solve this issue?
Thanks in advance!
 
    