同时查看文档和代码,str
似乎是基本类型,而String
是struct { Vec<u8> }
。现在,str
为[u8]
String
与Vec<u8>
的对象,str
无法定义为
struct str { slice: [u8]; }
类似于AsciiStr的定义方式?为什么/它(仍然?)被定义为原始的?
答案 0 :(得分:11)
一旦动态大小的类型出现,str
成为原始类型就不再有任何充分的理由;它可以完全合理地成为一个结构,如你所示,带有lang项目以获得字符串文字。但似乎没有任何特别好的理由改变它(尽管可能性已被讨论过几次),因此现状仍然存在。