繁体   English   中英

为什么`str`封装在`String`中,而不是封装在`Box中 <str> `?

[英]Why is `str` encapsulated inside `String` instead of inside a `Box<str>`?

这并没有给我带来任何困难 - 我完全有能力使用String - 但是有没有理由将str封装在自己的特殊类型中而不是更普遍的Box类型中? 如果有原因的,那么答案可能会帮助我的模型如何一起工作Box不同。

为什么str封装在String而不是在Box<str> 是为了方便输入这样一个共同结构还是有更深层次的原因?

String更像是Vec<char>不是Box<str> - 它有方法可以在最后推送更多的char ,或者推送整个str 它有长度和容量,而不仅仅是长度。 BoxVec ,它拥有它的内容,并把它们放在堆上; Box不同,它还将str的功能扩展到其固有属性之外。

str主要有&self方法,因为它不能改变它包含的任何字符,因为字符的改变可能意味着长度的改变,并且它不能重新分配自己。 另一方面, String就像一个&mut str因为它提供了操作str的方法。

例如,您可以推送它或替换部分

另一方面, Box<str>提供任何内容,因为它本质上是一个拥有的str ,所以它只提供我之前谈到的&self方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM