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

问题描述 投票:3回答:1

我正在读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. 是否有不可增长的字符串类型?
string rust mutable growable
1个回答
4
投票

你是在思考这里的措辞; “可生长”只意味着它可以成长。最初分配3个字节以包含String"abc"可以增长到6个字节以包含"abcdef"。内存分配可以变得更大(和更小)。对于“可增长”这个词,没有特定的Rust类型系统。

改变String的容量是一种特定类型的改变,所以你需要一个可变的String来生长字符串。您还需要一个可变的String用于其他类型的更改,不涉及更改分配。

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

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

也可以看看:

© www.soinside.com 2019 - 2024. All rights reserved.