str and String? That naming is horrible. string_view is a much better choice
2. string_view makes no sense when many str are not actually views into strings but either static data or "cast" bytes.
3. string_view makes no sense when str is the basic builtin type.
Renaming String to something like StrBuf might have made sense, but it's not like it would have been any clearer, people get confused by Path/PathBuf all the same if not more so.
Path/PathBuf have better names, but the distinction still isn't immediately obvious.
String/str is the cause of so much confusion.
This confusion is why we reorganized the book to talk about String and &str very early on, and use them to teach ownership and borrowing.