字串 (String)
Rust 用來代表字串的型別有兩種,稍後會深入介紹。兩者「一律」都儲存 UTF-8 編碼字串。
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 5 minutes.
這張投影片用於介紹字串。我們稍後會深入介紹此處提及的所有內容,但目前這些就已足夠用於後續的投影片和使用字串的練習題中。
-
字串中的無效 UTF-8 屬於 UB,而安全的 Rust 環境不允許此行為。
-
String
是使用者定義的型別,具備建構函式 (::new()
) 和s.push_str(..)
等方法。 -
&str
中的&
表示這是參照。我們稍後會講解何謂參照,因此現在只需將&str
視為代表「唯讀字串」的單位就行了。 -
被註解掉的那行程式碼會按照位元組位置建立索引到字串中。
12..13
的結尾不是字元邊界,因此程式會發生恐慌。請根據錯誤訊息,將其調整至結尾為字元邊界的範圍。 -
原形字串可讓您建立停用逸出功能的
&str
值:r"\n" == "\\n"
。只要在引號兩側使用等量的#
,即可嵌入雙引號:fn main() { println!(r#"<a href="link.html">link</a>"#); println!("<a href=\"link.html\">link</a>"); }
-
Using
{:?}
is a convenient way to print array/vector/struct of values for debugging purposes, and it's commonly used in code.