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

What is the difference between "growable" and "mutable" in a Rust string?

提问人:Armeen Moon 提问时间:2/25/2019 最后编辑:ShepmasterArmeen Moon 更新时间:2/25/2019 访问量:422

问:

我正在阅读 The Rust Programming Language文档将 String 定义为“growable”:

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

我发现可生长的并不等同于可变的,但是 他们并没有真正解释是什么让一种类型“可生长”。

鉴于此,let mut guess = String::new()

  1. “growable” 是什么意思?
  2. 如何改变可生长的字符串?mut
  3. 是否有不可生长的字符串类型?
字符串 可变 可种植

评论

1赞 E_net4 2/25/2019
这让我想起了最近另一个关于 str 及其大小的问题

答:

6赞 Shepmaster 2/25/2019 #1

你在这里想多了;“可生长”仅意味着它可以生长。最初分配 3 个字节来包含的 A 可以增长到 6 个字节来包含 。内存分配可以变得更大(和更小)。“可生长”这个词没有特定的 Rust 类型系统含义。String"abc""abcdef"

更改 a 的容量是一种特定类型的更改,因此您需要一个可变对象来增长字符串。对于不涉及更改分配的其他类型的更改,您还需要一个可变对象。StringStringString

可变字符串切片 () 是一种字符串类型,它不能变长或变短,但可以更改。&mut str

fn example(name: &mut str) {
    name.make_ascii_uppercase()
}

另请参阅: