On Strings in Rust
9 hours ago
- Rust中的字符串涉及两种主要类型:`str`(字符串切片)和`String`(拥有所有权的字符串),两者都保证是UTF-8编码的。
- `str`是位于宽指针之后的动态大小类型(DST),而`String`包装了`Vec<u8>`,支持堆分配和修改。
- 解引用强制转换和点操作符语义允许像`chars()`这样的方法通过自动解引用到`str`来操作`String`。
- `len()`方法返回的是字节数而非字符数,因为UTF-8是变长编码。
- 运算符重载(例如`+`用于拼接)和`PartialEq`等trait的实现使得字符串操作更加便捷。
- 像`make_ascii_uppercase()`这样的原地方法适用于`&mut str`,但无法处理会改变字节长度的非ASCII字符。
- 其他字符串类型包括`OsString`/`OsStr`、`CString`/`CStr`,以及实验性的`ByteString`/`Char`,用于特定场景。