Although true, the aim of the transition was to enforce encoding-correctness. Operations on strs should never break the encoding itself[1], but preserving the semantic meaning of the text itself is basically impossible for arbitrary data.<p>[1] Sadly surrogate escapes break this. Rust&#x27;s division into String:OsString:Vec&lt;u8&gt; makes that aspect a lot cleaner.