In general a lot of what one would think to be “core” functionality is maintained in external crates, often maintained by the Rust team itself (but not always). As mentioned in the quote I would like for the segmentation crate to be moved into the nursery and get team support.
grapheme clusters are useful to deal with meat-space problems (display width, character string comparisons),
This is incorrect. They are useful, but for neither of these operations. Grapheme clusters are useful for knowing logical boundaries where text can be segmented, i.e. if you need to cut something off. If you wish to sort text, you should be relying on a collation crate. If you wish to compare text, you need normalization.
Text is hard. Codepoints aren’t a very useful abstraction for text, but grapheme clusters aren’t the solution to all the problems. 99% of the time someone wants to do an operation on text, the answer is not to use grapheme clusters; the answer is that that operation makes no sense when generalized across languages.
I seriously can’t think of a use-case for code-points.
Codepoints are useful when parsing things or when implementing unicode algorithms, and not much else. The former is rather common in Rust.
Grapheme clusters are useful too, but in specialized cases usually dealing with editing, where you probably need to be using more than just grapheme clusters.
Grapheme clusters are a better way of thinking about strings as a programmer, but really the core of it is that strings should be opaque to you and the only operations you think of are find/equality, and substringing based on find results. These are all hard to get right in a universal way, and we perhaps should expose operations for this, but this is also kinda locale dependent and an even more iffy thing to move into the stdlib.
This is a super complex space and “move grapheme clusters into the stdlib” doesn’t even begin to solve things here.
Handling text properly is not a matter of “just use this abstraction it magically solves things for you”, it’s a matter of asking the programmer what operation they actually want to do.
If Rust were more UI-focused I’d be much more for doing this, but it’s not.
programs cannot rely on code-points to e.g. compute word widths and align text in a monospaced CLI, get the character next to the cursor and erase it in a GUI, …
FWIW, grapheme clusters solve neither problem here. Both editing and monospace width are complex problems. Grapheme clusters are part of the solution for editing, but not entirely.