544 字
约 1 分钟
0
切片和数组

切片和数组

在前面的代码中, 我们使用到了 String 类型和 &str 类型。 可既然有 &str 那为什么要使用 String 呢?

这是因为在 Rust 中, String 类型的字符串, 是一个动态长度的字符串, 可以在任意位置增加或减少字符。 而 &str 类型的字符串, 是一个静态长度的字符串, 它的长度在编译时就确定了, 不能改变。

&str 适用于只读借用, 而 String 适用于修改操作。

切片

切片允许引用集合中的部分连续元素, 而不是整个集合。&str 类型就是一个字符串切片。

切片的语法是 &[start..end]。其中 start 是切片的起始位置, end 是切片的结束位置。 需要注意的是, 切片的范围是左闭右开区间, 即包含 start 位置, 不包含 end 位置。

例如: let s = "hello world";, s 就是一个字符串切片, 它的类型是 &str&s[0..5] 表示获取字符串 s 的前 5 个字符, 即 "hello"

边界是可以省略的, 从零开始可以写为: &s[..5], 到结尾可以写为: &s[6..]

Rust 字符串是 UTF-8 编码, 切片时需要保证切在合法字符边界, 否则会导致程序崩溃。

切片是相当常用的功能, 避免了复制从而提供效率, 也可以提供灵活视图操作。

数组

Rust 中的数组也是编译时固定长度, 要求所有元素类型相同, 性能较高, 使用 let var: [type; length] = []; 定义。 例如: let arr: [i32; 5] = [1, 2, 3, 4, 5];, 声明了一个长度 5 的 i32 类型数组。

如果需要使用动态的数组, Rust 提供了 Vec<T> 动态数组, 它的长度可以在运行时改变。常用于不定量数据, 例如用户输入, 命令行参数等。 前面我们使用的 Vec<String> 就是这样的元素类型为 String 的动态数组。

切片和数组
http://www.clxhxhhr.top/posts/443/
作者
clxstart
发布于
2026-09-04
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。
文章目录