Rust中字符串涉及两种类型:&str
和String
&str
str
是Rust的内置类型,&str
是对str的借用。本质上&str
是一个&[u8]
切片,所以它没有所有权,它无权给这个字符串扩容或者释放内存。
String
String存储在Vec<u8>
中,它有管理的内存空间的所有权,所以可以增加内容。String实现了Deref<Target=str>
的trait,所以在很多情况下,&String类型可以被编译器自动转换为&str类型。
fn accept_str(substr: &mut str) {
println!("substr: {}", substr);
}
fn main() {
let mut s = String::from("Hello World");
accept_str(&mut s);
println!("{}", s);
}