我正在读The Rust Programming Language。 docs define a String
为“可增长的”:
UTF-8编码,可扩展的字符串。
我有found that growable is not the same as mutable,但他们并没有真正解释什么使一种类型“可成长”。
鉴于此let mut guess = String::new()
,
mut
如何改变一个可成长的字符串?你是在思考这里的措辞; “可生长”只意味着它可以成长。最初分配3个字节以包含String
的"abc"
可以增长到6个字节以包含"abcdef"
。内存分配可以变得更大(和更小)。对于“可增长”这个词,没有特定的Rust类型系统。
改变String
的容量是一种特定类型的改变,所以你需要一个可变的String
来生长字符串。您还需要一个可变的String
用于其他类型的更改,不涉及更改分配。
可变字符串切片(&mut str
)是一种不能变长或变短但可以更改的字符串。
fn example(name: &mut str) {
name.make_ascii_uppercase()
}
也可以看看: