Swift 6.0 Protocol Extensions with Generic Constraints
In Swift 6.0, protocol extensions get enhanced support for generic constraints
1
2
3
4
5
6
7
8
9
10
11
12
13
14
protocol Serializable {
func serialize() -> String
}
extension Serializable where Self: Encodable {
func serialize() -> String {
let encoder = JSONEncoder()
guard let data = try? encoder.encode(self),
let json = String(data: data, encoding: .utf8) else {
return "{}"
}
return json
}
}