sunface / rust-course

“连续八年成为全世界最受喜爱的语言,无 GC 也无需手动内存管理、极高的性能和安全性、过程/OO/函数式编程、优秀的包管理、JS 未来基石" — 工作之余的第二语言来试试 Rust 吧。本书拥有全面且深入的讲解、生动贴切的示例、德芙般丝滑的内容,这可能是目前最用心的 Rust 中文学习教程 / Book
https://course.rs
24.92k stars 2.15k forks source link

'7.3. String、&str 和 str' 内容有误导 #1245

Open idlercloud opened 1 year ago

idlercloud commented 1 year ago

str 类型是硬编码进可执行文件,也无法被修改

这一句是比较显然的错误。作者希望表述的应该是字符串字面量,如 "abc" 这样直接包含在源代码中的字符串,其类型为 &'static str。(注意,这并不意味着有 'static 生命周期的 str 就不可变了,仍然有办法构造出具有 'static 生命周期的 &mut str

然而 str 类型本身是可以修改的,可以试着用 Box<str> 调用 make_ascii_uppercase() 验证。

正如 String 只是 Vec<u8> 的包装,str 也基本上只是 [u8] 的一个子集,[u8] 可变,str 自然也可变,只是依旧要遵循 utf8 编码罢了。

sunface commented 1 year ago

谢谢提醒,我看一下哈。