鹏展博
472字约2分钟
2022-06-03
在 Rust 中, 常用的数组有两种:
array
速度很快但长度固定Vector
可动态增长但有性能损耗将多个类型相同的元素依次组合在一起,就是一个数组。
这里说的数组是 Rust 的基本类型,是固定长度的,这点与其他编程语言不同,其它编程语言的数组往往是可变长度的,与 Rust 中的动态数组 Vector
类似。
fn main() {
let arr1 = [1, 2, 3, 4];
// 创建一个长度为 3,每个元素都为 1 的数组
let arr2 = [1; 3];
// 声明数组类型, 格式 [type; length]
let arr3: [i32; 3] = [1, 2, 3];
}
使用 arr[index]
下标,访问数组元素
fn main() {
let arr = [1, 2, 3, 4];
let a = arr[0]; // 1
let b = arr[3]; // 4
}
数组不允许 越界访问 ,如果发生越界,Rust会出现 panic 。
数组切片 是对数组的部分引用。
fn main() {
let arr: [i32; 5] = [1, 2, 3, 4, 5];
let slice1: &[i32] = &arr[1..3]; // 创建已有数组的切片
let slice2: &[i32; 3] = &[1, 2, 3]; // 创建固定长度数组切片
let slice3: &[i32] = &[1, 2, 3, 4]; // 创建长度不固定的数组切片
}
[T]
拥有不固定的大小,而切片引用类型&[T]
则具有固定的大小,因为 Rust
很多时候都需要固定大小数据类型,因此&[T]
更有用,&str
字符串切片也同理