Thin UTF8 string wrapper
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Fri Dec 6 16:48:21 UTC 2019
Hello folks,
I have a use-case that involves wanting to create a thin struct
wrapper of underlying string data (the idea is to have a type
that guarantees that the string has certain desirable properties).
The string is required to be valid UTF-8. The question is what
the most useful API is to expose from the wrapper: a sliceable
random-access range? A getter plus `alias this` to just treat it
like a normal string from the reader's point of view?
One factor that I'm not sure how to address w.r.t. a full range
API is how to handle iterating over elements: presumably they
should be iterated over as `dchar`, but how to implement a
`front` given that `std.encoding` gives no way to decode the
initial element of the string that doesn't also pop it off the
front?
I'm also slightly disturbed to see that `std.encoding.codePoints`
requires `immutable(char)[]` input: surely it should operate on
any range of `char`?
I'm inclining towards the "getter + `alias this`" approach, but I
thought I'd throw the problem out here to see if anyone has any
good experience and/or advice.
Thanks in advance for any thoughts!
All the best,
-- Joe
More information about the Digitalmars-d-learn
mailing list