<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi people,<div class=""><br class=""></div><div class="">I’ve recently started migrating some Swift 2 projects to Swift 3. I came across the split of Range into Range and ClosedRange and I’ve really struggled with it. Specifically, in Swift 2, I had a struct with a Range property that was initialised in many places with either a closed or open range:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Menlo" class="">struct Day { … }</font></div><div class=""><font face="Menlo" class="">struct Day : Comparable { … }</font></div><div class=""><font face="Menlo" class="">struct Day : Strippable { … }</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class="">struct Info {</font></div><div class=""><font face="Menlo" class="">&nbsp; &nbsp; let name: String</font></div><div class=""><font face="Menlo" class="">&nbsp; &nbsp; let range: Range&lt;Day&gt;</font></div><div class=""><font face="Menlo" class="">}</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class="">Info(name: "Christmas Vacation", range: twentyfith...thirtyfirst)</font></div><div class=""><font face="Menlo" class="">Info(name: "Summer Vacation", range: someday..&lt;otherday)</font></div></div><div class=""><br class=""></div><div class="">Now, in Swift 3, it seems like we’ve lost a type to represent any range to allow an API client the flexibility to specify it as he wishes. Is there a solution to this problem through a protocol which both ranges conform to, or are we stuck with this because of the new API?</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">protocol RangeType {<br class="">&nbsp; &nbsp; associatedtype Bounds<br class="">&nbsp; &nbsp; let lowerBound: Bound { get }<br class="">&nbsp; &nbsp; let upperBound: Bound { get }<br class="">&nbsp; &nbsp; // what else? not even sure if it is possible to define such a protocol<br class="">}</font></div><div class=""><br class=""></div><div class="">David.</div></body></html>