创建数组
rust
let arr = [1, 2, 3, 4]
创建动态数组
rust
let mut vec = Vec::new();
vec.push(t);
数组切片引用类型
切片引用 和切片 两个名词经常被混用,因为 Rust 实际编程中几乎不用真正的切片类型。切片引用的类型是 &[T ] 。 切片引用本质上是个**胖指针(保存着指向数据的地址和元素的个数)。**而静态数组类型是在类型中保存长度信息的,这个信息是编译时可获取的。
rust
// 数组:[T; N] - 编译时已知长度
let array: [i32; 3] = [1, 2, 3]; // 类型中包含了长度 3
// 切片:&[T] - 运行时才知道长度
let slice: &[i32] = &array[..]; // 类型中不包含长度
rust
use std::mem::size_of;
fn main() {
// 引用的大小
println!("&i32: {} bytes", size_of::<&i32>()); // 8 bytes
println!("&[i32]: {} bytes", size_of::<&[i32]>()); // 16 bytes (胖指针)
println!("&str: {} bytes", size_of::<&str>()); // 16 bytes (也是胖指针)
// &str 是字符串切片引用,也是胖指针。str 类型也不会被单独使用。
// Vec 的大小
println!("Vec<i32>: {} bytes", size_of::<Vec<i32>>()); // 24 bytes (指针+长度+容量)
}
数组切片引用类型方便由静态数组,动态数组类型转化而来,适合作为统一接口。