Rust 字符串¶
Rust 中字符串有两种类型,分别为 String
和 &str
(称为字面量):
String
是一个堆分配的可变字符串类型&str
则是指字符串切片借用,它实在栈上分配的。
此外,&str
是不可变借用,指向存储在其他地方的 UTF-8 编码的字符串数据,由指针和长度构成。
之前也简单提到过,String 类型实际上就是使用了 Vec
类型,这个从源码中也能直观看出来。
String 是具有所有权的,而 &str
是没有的。Struct
中属性使用 String,如果不使用显式声明生命周期无法使用 &str
。
对于函数参数的类型,如果不想交出所有权,那么推荐使用 &str
。当参数类型为 &str
,可以传递 &str
和 String。当参数类型为 &String
,那么只能传递 &String
,而不能传递 &str
。