string - Rust 字符串中的 "growable"和 "mutable"有什么区别?

标签 string rust mutable

我正在阅读 The Rust Programming Language . docs define a String作为“可增长的”:

A UTF-8 encoded, growable string.

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

鉴于此 让 mut guess = String::new()

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

最佳答案

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

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

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

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

另见:

关于string - Rust 字符串中的 "growable"和 "mutable"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855543/

相关文章:

c - 字符数组的未定义长度

methods - 定义元组方法

rust - 如何在不实例化的情况下在 Rust 中获取结构字段的大小

iphone - 如何清除 NSMutableAttributedString 的内容?

java - Spring setters/getters 和可变变量

java - 从末尾开始解析字符串

java - 为什么 "=="有时会与 String.trim 一起使用?

javascript - TextEncoder 和 TextDecoder 不是彼此的完美逆向

rust - 如何通过适配器在一行中重复或连接两个切片 n 次?

rust - 如何使用另一个结构覆盖可变引用中的所有字段?