Changeset icon indicating copy to clipboard operation
Changeset copied to clipboard

How to use Changeset in protocols?

Open pepasflo opened this issue 7 years ago • 2 comments

I can't figure out how to make the compiler happy when trying to express something like this:

public protocol ChangesetApplying: class {
    associatedtype T
    func apply(changeset: Changeset<T>)
}

The above will complain that Type 'Self.T' does not conform to protocol 'Collection'.

Changing it to associatedtype T: Collection yields a different error: Type 'Self.T.Iterator.Element' does not conform to protocol 'Equatable'.

Changing it to associatedtype T: Collection where T.Iterator.Element: Equatable, T.IndexDistance == Int yields the error 'where' clause cannot be attached to an associated type declaration, which appears to be the subject of SE-0142.

Any ideas?

pepasflo avatar Mar 17 '17 21:03 pepasflo

SE-0142 is implemented for Swift 4. Does this problem still exist in Swift 4?

ZevEisenberg avatar Sep 07 '17 03:09 ZevEisenberg

Thanks for poking this ticket! I don't have Swift 4 installed yet, but I can check back in when I do. In the mean time, if someone else can confirm, that would be great!

pepasflo avatar Sep 11 '17 15:09 pepasflo