Rust数组

在 Rust 中,数组 [T; N] 是长度固定且在栈(Stack)上分配的连续内存块。虽然数组的大小在编译时就已固定,但它能自动“隐式转换”为切片 &[T],因此你可以直接在数组上调用绝大多数切片的方法
以下是常用接口及 starts_with 的详细用法:

1. 核心接口:starts_with

starts_with 用于检查数组是否以某个特定的序列开头
let magic_bytes: [u8; 6] = [0x47, 0x49, 0x46, 0x38, 0x39, 0x61]; // GIF89a 头部

// 检查是否以 GIF 标识开头
if magic_bytes.starts_with(&[0x47, 0x49, 0x46]) {
    println!("这是一个 GIF 文件");
}

2. 其他常用接口(通过切片强制转换提供)

 
方法功能描述示例
.len() 返回数组长度 [1, 2].len() 返回 2
.contains(&x) 检查是否包含某个元素 [1, 2, 3].contains(&2) 返回 true
.ends_with(&seq) 检查是否以某序列结尾 arr.ends_with(&[0x00])
.split_at(n) 在索引 n 处将数组切分为两个切片 let (head, tail) = arr.split_at(14);
.chunks(n) 按长度 n 分块迭代 for chunk in arr.chunks(4) { ... }
.iter() 返回不可变迭代器 `arr.iter().map()
.as_ptr() 返回指向底层内存的原始指针 常用于 FFI 传递给 C 语言

3. 数组特有的操作

由于数组大小已知,Rust 提供了一些专门针对固定长度数组的操作:
  • .first() .last(): 安全地获取首尾元素,返回 Option<&T>
  • .get(index): 安全地按索引访问,防止 panic
  • .copy_from_slice(src): 将切片内容快速拷贝到数组中(长度必须匹配)。

参考资料:

rust数组与切片

posted @ 2026-02-03 16:38  PKICA  阅读(4)  评论(0)    收藏  举报