on Sat Jun 03 2017, Ben Rimmington <me-AT-benrimmington.com> wrote: >> On 27 May 2017, at 18:40, Dave Abrahams wrote: >> >> ## Introduction >> >> Today `String` shares an `Index` type with its `CharacterView` but not >> with its `UTF8View`, `UTF16View`, or `UnicodeScalarView`. This >> proposal redefines `String.UTF8View.Index`, `String.UTF16View.Index`, >> and `String.CharacterView.Index` as typealiases for `String.Index`, >> and exposes a public `encodedOffset` property and initializer that can >> be used to serialize and deserialize positions in a `String` or >> `Substring`. > > If `encodedOffset` is only needed for serialization of indices,
It's not only needed for that. Once StringProtocol provides access to its underlying code units, the encodedOffset will be useful information in other ways. > could `String.Index` conform to `Codable` from SE-0166 instead? Not instead, definitely. Additionally, maybe; that's a separate proposal. >> ## Proposed solution >> >> All `String` views will use a single index type (`String.Index`), so >> that positions can be interchanged without awkward explicit >> conversions: >> >> ```swift >> let html: String = "See <a href=\"http://swift.org\">swift.org</a>" >> >> // Search the UTF16, instead of characters, for performance reasons: >> let open = "<".utf16.first!, close = ">".utf16.first! >> let tagStart = s.utf16.index(of: open) >> let tagEnd = s.utf16[tagStart...].index(of: close) > > I think `s` should be `html` in the previous two lines. Ah, yeah, thanks; good catch! -- -Dave _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
