簡體   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