切片(Slice)是对数据值的部分引用。

最简单、最常用的数据切片类型是字符串切片(String Slice)。

fn main() {
    let s = String::from("broadcast");

    let part1 = &s[0..5];
    let part2 = &s[5..9];

    println!("{}={}+{}", s, part1, part2);
}

Rust 中的字符串类型实质上记录了字符在内存中的起始位置和其长度,我们暂时了解到这一点

使用 .. 表示范围的语法在循环章节中出现过。x..y 表示 [x, y) 的数学含义。.. 两边可以没有运算数:

..y 等价于 0..y x.. 等价于位置 x 到数据结束 .. 等价于位置 0 到结束

被切片引用的字符串禁止更改其值

在 Rust 中有两种常用的字符串类型:str 和 String。str 是 Rust 核心语言类型,就是字符串切片(String Slice),常常以引用的形式出现(&str)。

凡是用双引号包括的字符串常量整体的类型性质都是 &str

String 类型是 Rust 标准公共库提供的一种数据类型,它的功能更完善——它支持字符串的追加、清空等实用的操作。

String 和 str 除了同样拥有一个字符开始位置属性和一个字符串长度属性以外还有一个容量(capacity)属性。

String 和 str 都支持切片,切片的结果是 &str 类型的数据。

注意:切片结果必须是引用类型,但开发者必须自己明示这一点:

有一个快速的办法可以将 String 转换成 &str: