为什么`str`是原始类型?

llo*_*giq 10 internals rust

查看文档和代码,它看起来str是一个原始类型,String而是一个struct { Vec<u8> }.现在,作为str是一个[u8]什么String是一个Vec<u8>,不能str被定义为

struct str { slice: [u8]; }
Run Code Online (Sandbox Code Playgroud)

类似于AsciiStr的定义方式?为什么/它(仍然?)被定义为原始的?

Chr*_*gan 11

一旦出现动态大小的类型,就不再有任何理由str成为原始类型; 它可以完全合理地成为一个结构,如你所示,带有lang项目以获得字符串文字.但似乎没有任何特别好的理由改变它(尽管可能性已被讨论过几次),因此现状仍然存在.