为什么 `str` 是原始类型?
Why is `str` a primitive type?
查看文档和代码,似乎 str
是原始类型,而 String
是 struct { Vec<u8> }
。 str
之于 [u8]
就像 String
之于 Vec<u8>
,难道 str
不能被定义为
struct str { slice: [u8]; }
类似于 AsciiStr 的定义方式?为什么 was/is 它(仍然?)定义为原始的?
一旦出现动态大小的类型,str
就不再有任何充分的理由成为原始类型;正如您所指出的,它完全可以合理地成为一个结构,并带有一个 lang 项以利于字符串文字。但似乎也没有什么特别好的理由去改变它(虽然这种可能性被讨论过几次),所以维持现状。
查看文档和代码,似乎 str
是原始类型,而 String
是 struct { Vec<u8> }
。 str
之于 [u8]
就像 String
之于 Vec<u8>
,难道 str
不能被定义为
struct str { slice: [u8]; }
类似于 AsciiStr 的定义方式?为什么 was/is 它(仍然?)定义为原始的?
一旦出现动态大小的类型,str
就不再有任何充分的理由成为原始类型;正如您所指出的,它完全可以合理地成为一个结构,并带有一个 lang 项以利于字符串文字。但似乎也没有什么特别好的理由去改变它(虽然这种可能性被讨论过几次),所以维持现状。