查看文档和代码,似乎
str
是原始类型,而 String
是 struct { Vec<u8> }
。现在,正如 str
与 [u8]
的关系一样,String
与 Vec<u8>
的关系,不能将 str
定义为
struct str { slice: [u8]; }
类似于 AsciiStr 的定义方式?为什么它(仍然?)被定义为原始?
一旦动态大小的类型出现,
str
就不再有任何充分的理由成为原始类型;正如您所指出的,它完全可以合理地成为一种结构,并带有一个 lang 项以利于字符串文字。但似乎也没有任何特别好的理由来改变它(尽管可能性被讨论了几次),所以现状保持不变。