Rust中字符串涉及兩種類型:&str和String
&str
str是Rust的內(nèi)置類型,&str是對str的借用。本質(zhì)上&str是一個&[u8]切片,所以它沒有所有權(quán),它無權(quán)給這個字符串擴容或者釋放內(nèi)存。
String
String存儲在Vec<u8>中,它有管理的內(nèi)存空間的所有權(quán),所以可以增加內(nèi)容。String實現(xiàn)了Deref<Target=str>的trait,所以在很多情況下,&String類型可以被編譯器自動轉(zhuǎn)換為&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);
}