Rust字符串中的“ growable”和“ mutable”有什么区别?

时间:2019-02-24 19:14:42

标签: string rust mutable growable

我正在读The Rust Programming Languagedocs define a String为“可增长”:

  

UTF-8编码的可增长字符串。

我有found that growable is not the same as mutable,但是  他们并没有真正解释什么使类型“可增长”。

给出此let mut guess = String::new()

  1. “可增长”是什么意思?
  2. mut如何更改可增长的字符串?
  3. 是否存在不可增长的字符串类型?

1 个答案:

答案 0 :(得分:4)

您对这里的措辞太想了; “可增长”仅表示它可以增长。最初分配3个字节以包含String的{​​{1}}可以增长到6个字节以包含"abc"。内存分配可以变大(变小)。 “可成长”一词没有特定的Rust类型系统。

更改"abcdef"的容量是一种特殊的更改,因此您需要一个可变的String才能增长字符串。您还需要一个可变的String来进行其他类型的更改,这些更改不涉及更改分配。

可变字符串切片(String)是不能变长或变短但可以更改的字符串类型。

&mut str

另请参阅: