字串切片

fn main() {
    let english = "Hello, World!";

    println!("{}", &english[0..5]); // Prints "Hello"
    println!("{}", &english[7..]);  // Prints "World!"
}

請注意,我們需要在這裡使用 & 運算子。它需要一個引用,從而為編譯器提供有關切片型別大小的資訊,它需要列印它。沒有引用,兩個 println! 呼叫將是編譯時錯誤。

警告:切片按位元組偏移工作,而不是字元偏移,並且當邊界不在字元邊界時會發生混亂:

fn main() {
    let icelandic = "Halló, heimur!"; // note that “ó” is two-byte long in UTF-8

    println!("{}", &icelandic[0..6]); // Prints "Halló", “ó” lies on two bytes 5 and 6
    println!("{}", &icelandic[8..]);  // Prints "heimur!", the `h` is the 8th byte, but the 7th char
    println!("{}", &icelandic[0..5]); // Panics!
}

這也是字串不支援簡單索引的原因(例如,icelandic[5])。