&str 的種類

&str 的種類不止一個。我們有:

  • 字串字面常數 (String literal):當你寫 let my_str = "I am a &str" 的時候,就會產生這種字串。它們在整個程式中持續存在,因為它們是直接寫進二進位檔案中的,它們的型別是 &'static str' 是表示它的生命週期 (lifetime),字串字面常數有著稱為 static 的生命週期。
  • 借用字串 (Borrowed str):這是沒有 static 生命週期的 &str 的常規形式。如果你建立 String 並得到了它的參考,Rust 會在你需要它時把它轉換為 &str。例如:
fn prints_str(my_str: &str) { // 可以像 &str 般使用 &String
    println!("{}", my_str);
}

fn main() {
    let my_string = String::from("I am a string");
    prints_str(&my_string); // 我們傳給 prints_str 的型別是 &String
}

那什麼是生命週期呢?我們馬上會學到。