String 与 &str
本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 54 课,共 66 课。
Rust 有两种主要的字符串类型,用途各不相同:String 和 &str。理解它们之间的区别,对于在 Rust 中高效处理文本至关重要。
String 是一种拥有所有权、分配在堆上的字符串,你可以修改它。创建 String 时,你的程序拥有这份数据,并负责管理它占用的内存。使用 mut 声明后,它就是可变的,因此你可以扩展或缩短它,也可以更改其内容。
let mut my_string = String::from("Hello");
my_string.push_str(" World"); // 这样可以,因为 String 拥有所有权且可修改。相比之下,&str(读作“字符串切片”)是对字符串数据的借用、不可变视图。它不拥有所指向的数据,它只是对其他位置存在的某些字符串内容的引用。像 "Hello" 这样的字符串字面量实际上属于 &str 类型。
let my_slice: &str = "Hello World"; // 这是一个字符串切片把 String 想象成一本属于你的书,你可以在上面书写并修改内容;而 &str 就像借别人的书,你可以阅读,但不能修改。这种区别是 Rust 所有权系统的基础,有助于确保内存安全。
亲手试试
这节课没有代码挑战。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Rust 在线编译器