> It appears that you can’t extend a generic class/struct with a requirement > that a type parameter inherit from a non-protocol: > extension Dictionary where Key : String { … } > The above produces the error “Type ‘Key’ constrained to non-protocol type > ‘String’”.
You can't do `Key: String` because `String`, as a struct, cannot have any subtypes. `Key: NSString`, for instance, works. What you really want to do is say `Key == String`, but this isn't supported right now. (My understanding is that this is basically just an implementation shortcut they took.) One workaround is to define your own protocol and constrain to that: protocol _StringType: Hashable { // Include the String APIs you need to use here. } extension String: _StringType {} extension Dictionary where Key: _StringType { … } -- Brent Royal-Gordon Architechies _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users