I think what swift does is good for its design space. I definitely would not like it if Rust did the same thing, because you need fast ways to store and reuse indices for parsing and other things.
Swift is primarily geared towards UI, and in that case using EGCs is the right design choice.
Swift is primarily geared towards UI, and in that case using EGCs is the right design choice.