这并不会给我带来任何困难——我完全能够使用String
——但是,为什么str
封装在自己的特殊类型中,而不是在更通用的Box
类型内部?如果有原因,那么答案可能会帮助我更好地处理Box
。
为什么str
封装在String
内部,而不是在Box<str>
内部?这只是方便打字常见结构,还是有更深层次的原因?
这并不会给我带来任何困难——我完全能够使用String
——但是,为什么str
封装在自己的特殊类型中,而不是在更通用的Box
类型内部?如果有原因,那么答案可能会帮助我更好地处理Box
。
为什么str
封装在String
内部,而不是在Box<str>
内部?这只是方便打字常见结构,还是有更深层次的原因?
String
更像是一个Vec<char>
而不是Box<str>
——它有一些方法可以在末尾添加更多的char
或整个str
。它有长度和容量,而不仅仅是长度。和Box
和Vec
一样,它拥有它的内容,并将它们放在堆上。但与Box
不同的是,它还扩展了str
的功能,超出了其固有属性。
Vec<str>
呢?但是谢谢你,我之前没有意识到这个要求——尽管回想起来很明显。 - Lemma PrismVec<char>
有所异议,更倾向于使用 Vec<u8>
,但是String
实际上就是一个 Vec<u8>
。该源码是公开的,并且在文档中也有链接,你可以随意查看。 - ShepmasterVec<char>
更接近于这个概念,但在实现上,Vec<u8>
是字面上的真相(并更准确地表示了内存占用)。 - ZarenorVec<str>
而不是 Vec<char>
,真是太愚蠢了。但是,源代码实际上非常容易审查!感谢 @Zarenor 指出了我本应该提出的问题。 - Lemma Prism
String
和str
之间的区别?的重复问题。 - ZarenorBox<slice>
? - StargateurBox<str>
是一种完全有效且偶尔有用的类型。它不是“而不是”,而是“以及”。 - trent