提问人:Armeen Moon 提问时间:2/25/2019 最后编辑:ShepmasterArmeen Moon 更新时间:2/25/2019 访问量:422
Rust 字符串中的“growable”和“mutable”有什么区别?
What is the difference between "growable" and "mutable" in a Rust string?
问:
我正在阅读 The Rust Programming Language。文档将 String
定义为“growable”:
UTF-8 编码的可增长字符串。
我发现可生长的并不等同于可变的,但是 他们并没有真正解释是什么让一种类型“可生长”。
鉴于此,let mut guess = String::new()
- “growable” 是什么意思?
- 如何改变可生长的字符串?
mut
- 是否有不可生长的字符串类型?
答:
6赞
Shepmaster
2/25/2019
#1
你在这里想多了;“可生长”仅意味着它可以生长。最初分配 3 个字节来包含的 A 可以增长到 6 个字节来包含 。内存分配可以变得更大(和更小)。“可生长”这个词没有特定的 Rust 类型系统含义。String
"abc"
"abcdef"
更改 a 的容量是一种特定类型的更改,因此您需要一个可变对象来增长字符串。对于不涉及更改分配的其他类型的更改,您还需要一个可变对象。String
String
String
可变字符串切片 () 是一种字符串类型,它不能变长或变短,但可以更改。&mut str
fn example(name: &mut str) {
name.make_ascii_uppercase()
}
另请参阅:
评论
str
及其大小的问题。