我正在阅读 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()
,
- “可增长”是什么意思?
mut
如何改变可增长的字符串?- 是否存在不可增长的字符串类型?
最佳答案
你想多了这里的措辞; “可生长”仅意味着它可以生长。最初分配 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/