title: Rust为什么会有这么多字符串相似类型？
desc: strStringCStrCStringOsStrOsStringPathPathBuf<br><br> 它们各自强调什么？<br> 它们各自的关系又是如何？<br><br>看了 std 的文档，愣是没看懂这些
topic: 编程语言
content: str 相对 String 不同的是，它是一个动态尺寸类型，具体来说它是一段被验证为有效的 UTF-8 序列的 u8 数组。String 需要额外的堆空间来存储它的值，而 str 不需要。这个区别主要是因为 Rust 是一个关注性能的语言，而 str 这样一个只在一处分配内存的数据类型对于提升性能是很有用的。关注性能的 C 语言程序比如一些高性能游戏，很多时候会在结构体的末尾放一个长度为零的字符数组，使得相关联的不定长的字符串可以分配在连续
answerer_tags: PHP 程序员