Rust 字符串中的 "growable" 和 "mutable" 有什么区别?
What is the difference between "growable" and "mutable" in a Rust string?
我正在阅读 The Rust Programming Language. The docs define a String
作为 "growable":
A UTF-8 encoded, growable string.
我,但是
他们并没有真正解释是什么构成了类型 "growable".
鉴于此 let mut guess = String::new()
,
- "growable" 是什么意思?
mut
如何改变可增长的字符串?
- 是否有不可增长的字符串类型?
你想多了这里的措辞; "growable"只代表它可以成长。最初分配 3 个字节来包含 "abc"
的 String
可以 增长 到 6 个字节来包含 "abcdef"
。内存分配可以变得更大(和更小)。 "growable".
这个词没有特定的 Rust 类型系统含义
改变 String
的容量是一种特殊类型的改变,所以你需要一个可变的 String
来增加字符串。对于不涉及更改分配的其他类型的更改,您还需要一个可变 String
。
可变字符串切片 (&mut str
) 是一种不能变长或变短但可以更改的字符串。
fn example(name: &mut str) {
name.make_ascii_uppercase()
}
另请参阅:
- What are the differences between Rust's `String` and `str`?
我正在阅读 The Rust Programming Language. The docs define a String
作为 "growable":
A UTF-8 encoded, growable string.
我
鉴于此 let mut guess = String::new()
,
- "growable" 是什么意思?
mut
如何改变可增长的字符串?- 是否有不可增长的字符串类型?
你想多了这里的措辞; "growable"只代表它可以成长。最初分配 3 个字节来包含 "abc"
的 String
可以 增长 到 6 个字节来包含 "abcdef"
。内存分配可以变得更大(和更小)。 "growable".
改变 String
的容量是一种特殊类型的改变,所以你需要一个可变的 String
来增加字符串。对于不涉及更改分配的其他类型的更改,您还需要一个可变 String
。
可变字符串切片 (&mut str
) 是一种不能变长或变短但可以更改的字符串。
fn example(name: &mut str) {
name.make_ascii_uppercase()
}
另请参阅:
- What are the differences between Rust's `String` and `str`?