Rust 中有两种字符串类型:String
和 &str
。
String
被存储为由字节组成的 vector(Vec<u8>
),但保证了它一定是一个有效的
UTF-8 序列。String
是堆分配的,可增长的,且不是零结尾的(null terminated)。
&str
是一个总是指向有效 UTF-8 序列的切片(&[u8]
),并可用来查看 String
的内容,就如同 &[T]
是 Vec<T>
的全部或部分引用。
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
更多 str
/String
方法可以在 std::str 和 std::string 模块中
找到。
书写含有特殊字符的字符串字面量有很多种方法。它们都会产生类似的 &str
,所以最好
选择最方便的写法。类似地,字节串(byte string)字面量也有多种写法,它们都会产生
&[u8; N]
类型。
通常特殊字符是使用反斜杠字符 \
来转义的,这样你就可以在字符串中写入各种各样的
字符,甚至是不可打印的字符以及你不知道如何输入的字符。如果你需要反斜杠字符,再用
另一个反斜杠来转义它就可以,像这样:\\
。
字面量中出现的字符串或字符定界符必须转义:"\""
、'\''
。
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
有时会有太多需要转义的字符,或者是直接原样写出会更便利。这时可以使用原始字符
串(raw string)。
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
想要非 UTF-8 字符串(记住,&str
和 String
都必须是合法的 UTF-8 序列),或者
需要一个字节数组,其中大部分是文本?请使用字节串(byte string)!
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
若需要在编码间转换,请使用 encoding crate。
Rust 参考中的 Tokens 一章详细地列出了书写字符串字面量和转义字符的方法。