字符串切片

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])。