Rust 中最常用的两种字符串类型是 String
和 &str
。
String
存储为字节向量 (Vec<u8>
),但保证始终是有效的 UTF-8 序列。String
在堆上分配,可增长且不以 null 结尾。
&str
是一个切片 (&[u8]
),它始终指向有效的 UTF-8 序列,并且可以像 &[T]
是 Vec<T>
的视图一样,用于查看 String
。
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
更多 str
/String
方法可以在 std::str 和 std::string 模块下找到
有多种方法可以在字符串字面量中编写特殊字符。所有这些都产生类似的 &str
,因此最好使用最方便编写的形式。类似地,有多种方法可以编写字节字符串字面量,它们都产生 &[u8; N]
。
通常,特殊字符使用反斜杠字符 \
转义。这样,你可以将任何字符添加到字符串中,即使是不可打印的字符和那些你不知道如何键入的字符。如果你想要一个字面的反斜杠,请用另一个反斜杠转义它:\\
出现在字面量中的字符串或字符字面量分隔符必须转义:"\""
,'\''
。
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
有时,需要转义的字符太多了,或者直接按原样写出一个字符串更方便。这就是原始字符串字面量发挥作用的地方。
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
想要一个不是 UTF-8 的字符串?(请记住,str
和 String
必须是有效的 UTF-8)。或者,也许你想要一个主要由文本组成的字节数组?字节字符串可以解决问题!
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
有关字符编码之间的转换,请查看 encoding crate。
有关编写字符串字面量和转义字符的更多详细列表,请参见 Rust 参考的“Tokens”章节。