企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
字符串字面量中单引号不需要反斜杠转义,双引号需要。 字符串可以直接换行,折行前面的空格也包含在内,假如换行的上一行以反斜杠结尾,则折行前面的空格不包含在内。 在字符串前面加r表示raw字符串,raw字符串里面不能用反斜杠加双引号得到双引号。raw字符串里不识别转义???可以在r后面个raw字符串后面加相同数量的字母标记。 字符串前面加b,叫字节字符串,表示u8类型的切片,而不是字符串。字节字符串里面可以用转义字符,raw字节字符串用br前缀。 rust字符串是unicode字符序列,但是内存表示并不是字符数组。它们以UTF-8格式存储,一种变宽编码,ASCII字符以1个字节存储,其他的以多个字节存储。 你可以把String看作是以UTF-8格式存储的u8向量,实际上正是String的实现方式。&str是切片引用,它是一个肥指针,包含数据地址和长度,字符串字面量是一个切片引用指向预分配文本,典型地存在机器码的只读内存中。String或者&str的.len()方法返回它的字节长度而不是字符数。修改一个&str是不可能的,创建一个运行时字符串用String,&mut str确实存在,不过没什么用,因为几乎所有操作都会影响UTF-8字符串的长度,而切片不能重新分配它的引用。实际上可变字符串切片可用的操作只有字符大小写转换方法。&str非常像&\[T\],String像Vec。当字符串离开作用域的时候,它指向的数据自动被释放,除非字符串转移了。 .to\_string()方法把&str字符串转成String类型,执行字符串拷贝。 format!宏类似println!宏,只不过它返回字符串而不是打印到屏幕,字符串数组、切片、向量的.concat()和.join(sep)方法可以连接字符串。作为函数参数的时候&str比String更通用。 字符串可以用==和!=来比较内容,不管它们是不是同一块内存,还有其他类似的运算符>,>=,<,<=。如果字符串表示一样但是unicode编码方式不同,算不同的字符串。 rust提供一些特殊的类字符串类型来表示非unicode编码的字符串。