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

Why is `str` a primitive type?

查看文档和代码,似乎 str 是原始类型,而 Stringstruct { Vec<u8> }str 之于 [u8] 就像 String 之于 Vec<u8>,难道 str 不能被定义为

struct str { slice: [u8]; }

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

一旦出现动态大小的类型,str 就不再有任何充分的理由成为原始类型;正如您所指出的,它完全可以合理地成为一个结构,并带有一个 lang 项以利于字符串文字。但似乎也没有什么特别好的理由去改变它(虽然这种可能性被讨论过几次),所以维持现状。