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

时间:2015-07-13 12:08:36

标签: rust internals

同时查看文档和代码,str似乎是基本类型,而Stringstruct { Vec<u8> }。现在,str[u8] StringVec<u8>的对象,str无法定义为

struct str { slice: [u8]; }

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

1 个答案:

答案 0 :(得分:11)

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