字符串
let s1: &'static str = "I am a superman."; <br>let s2: String = s1.to_string(); <br>let s3: &String = &s2;<br>let s4: &str = &s2[..];<br>let s5: &str = &s2[..6];<br><br>
String
String 是字符串的所有权形式,常常在堆内存中出现。
对 String 做字符串切片操作后,可以得到 &str。
&String
&String 仅仅是对 String 类型的字符串的普通引用。
str
str 是字符串的切片类型,通常以切片引用&str的形式出现,是字符串视图的借用形式。
&str
对 String 做字符串切片操作后,可以得到 &str。
&str 既可以引用堆中的字符串,也可以引用静态数据区中的字符串(&'static str 是 &str 的一种特殊形式)。
&str 和 String 之间的转换
fn main() {<br> let s: String = "I am a superman.".to_string(); <br> let a_slice: &str = &s[..]; // 对 String 做字符串切片操作后,可以得到 &str。<br> <br> // &str 也可转换为 String,有以下 3 种方法<br> let String1: String = a_slice.to_string(); <br> let String2: String = String::from(a_slice);<br> let String3: String = a_slice.to_owned();<br>}