I have a model like this:
protocol Promise {
associatedtype Result
}
protocol Scanner {
associatedtype ScanPromise: Promise
func promiseScan<T>(from: Offset, until: (Offset, Item) -> T?) ->
ScanPromise // where Result == T?
}
The thing that I’m trying to express is: whichever type implements the
associated type ‘ScanPromise’ must be generic, and that parameter must be its
result (i.e. something it got as a result of calling the “until” closure).
Even with SE-0142, this kind of constraint would not be possible. What I would
like to write is something like this:
protocol Promise {
associatedtype Result
}
protocol Scanner {
associatedtype ScanPromise<T>: Promise // now generic. [SE-0142]: where
Result == T
func promiseScan<T>(from: Offset, until: (Offset, Item) -> T?) ->
ScanPromise<T>
}
Thoughts?
- Karl_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution