在 Rust 中,&str 是一个 字符串切片(string slice),它不是完整的 String,而是对某段 UTF-8 文本的 只读引用。
✅ 简单回答:
&str是 slice,不是 string。
它是对字符串数据的引用,不是拥有所有权的容器。
更具体地:
| 类型 | 描述 |
|---|---|
String | 拥有所有权的、堆分配的、可变的字符串类型。 |
&str | 字符串切片,是对某段 UTF-8 数据的只读引用,不拥有数据。 |
str | 动态大小类型(DST),不能直接实例化,只能通过引用 &str 或 Box<str> 使用。 |
举个例子:
let s: String = String::from("hello"); // 拥有所有权
let slice: &str = &s[..]; // 只是一个引用,指向 s 的一部分或全部
这里 &s[..] 就是一个 &str,它是对 String 的切片引用。
总结一句话:
&str是 字符串切片(string slice),是对 UTF-8 数据的只读引用,不是拥有所有权的String。
Rust中&str是字符串切片非string
1052

被折叠的 条评论
为什么被折叠?



