字符串
Rust has two types to represent strings, both of which will be covered in more depth later. Both always store UTF-8 encoded strings.
String
- a modifiable, owned string.&str
为只读字符串。字符串字面量属于此类型。
fn main() { let greeting: &str = "Greetings"; let planet: &str = "🪐"; let mut sentence = String::new(); sentence.push_str(greeting); sentence.push_str(", "); sentence.push_str(planet); println!("final sentence: {}", sentence); println!("{:?}", &sentence[0..5]); //println!("{:?}", &sentence[12..13]); }
This slide should take about 10 minutes.
此幻灯片介绍了字符串。此处所有内容均会在稍后进行更详细的介绍,但对于后续幻灯片和练习而言,当前介绍足以支撑使用字符串了。
-
字符串中的无效 UTF-8 是未定义行为 (UB),这在安全的 Rust 中是不允许的。
-
String
是一种用户定义的类型,具有构造函数 (::new()
) 和类似s.push_str(..)
的方法。 -
&str
中的&
表示这是一个引用。我们稍后将介绍引用,现在只需将&str
视为一个单位,表示 “只读字符”。 -
注释掉的行会按字节位置编入字符串的索引。
12..13
不是以字符边界结尾,因此会导致程序 panic。根据错误消息,将其调整至以字符边界结尾的范围。 -
原始字符串可在创建
&str
时禁用转义:r"\n" == "\\n"
。可以在外层引号两侧添加相同数量的#
,以在字符串中嵌入双引号:fn main() { println!(r#"<a href="link.html">link</a>"#); println!("<a href=\"link.html\">link</a>"); }