[Dlang-study] [rcstring] Defining rcstring
andrei at erdani.com
Tue Feb 2 13:40:26 PST 2016
Let's reboot this list with a simpler discussion: rcstring, a
reference-counted string. My initial thoughts:
* make it part of a nascent std.experimental.lifetime module/package
* call it rcstring or RCString? The first makes it closer to "string",
the other is politically correct.
* Characters are small so no need to return them by reference. Because
of this, making RCString @safe should be possible in current D. However,
this also makes RCString not a plug-in replacement for string (which may
after all be a good thing)
* Since string-compatibility is off the table, how about we fix string's
issues with autodecoding? RCString should offer no indexed access and no
length. Instead it offers the ranges byCodeUnit, byChar, byWChar, and
byDChar. The first one does not do any decoding and offers length and
random access. (What should be its element type?) The other ones are
bidirectional ranges that do the appropriate decoding.
* Immutable does not play well with reference counting. I'm of a mind to
reject immutable rcstring for now and figure out later how to go about
it. Then const rcstring is okay because we always consider const a view
on mutable strings (even though they're gone). We'll cast const away
when manipulating the refcount.
* I don't have the small string optimization implemented yet, but
obviously the definition of the type should allow it.
More information about the Dlang-study