Lem*_*ism 5 string smart-pointers rust
这并没有给我带来任何麻烦-我完全有能力使用String-但是否有任何原因str封装在其自己的特殊类型中,而不是封装在更一般的Box类型中?如果是有原因的,那么答案可能会帮助我的模型如何与工作Box不同。
为什么str封装在内部String而不是内部Box<str>?仅仅是为了方便键入这样一个通用结构还是有更深层次的原因?
String它Vec<char>比a 更像Box<str>-它具有将chars 推到最后或推到整个的方法str。它具有长度和容量,而不仅仅是长度。像Box和一样Vec,它拥有其内容,并将其放置在堆上;不像Box,它还扩展了str其固有属性之外的功能。
str主要具有&self方法,因为它不能更改其包含的任何字符,因为字符的更改可能意味着长度的更改,并且不能重新分配自身。另一方面,String它就像a一样,&mut str因为它提供了操作strs的方法。
例如,您可以将其推入,或替换一个section。
另一方面,a Box<str>根本不提供任何东西,因为它本质上是拥有的str,因此仅提供了&self我之前提到的方法。