Rust 中的数组和数组切片引用

创建数组

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 (指针+长度+容量)
}

数组切片引用类型方便由静态数组,动态数组类型转化而来,适合作为统一接口。

相关推荐
csbysj20201 分钟前
AngularJS 模块
开发语言
独好紫罗兰10 分钟前
对python的再认识-基于数据结构进行-a003-列表-排序
开发语言·数据结构·python
wuhen_n17 分钟前
JavaScript内置数据结构
开发语言·前端·javascript·数据结构
不会代码的小测试19 分钟前
UI自动化-POM封装
开发语言·python·selenium·自动化
roman_日积跬步-终至千里25 分钟前
【Java并发】Java 线程池实战:警惕使用CompletableFuture.supplyAsync
java·开发语言·网络
lsx20240630 分钟前
C++ 基本的输入输出
开发语言
CodeSheep程序羊42 分钟前
拼多多春节加班工资曝光,没几个敢给这个数的。
java·c语言·开发语言·c++·python·程序人生·职场和发展
独好紫罗兰43 分钟前
对python的再认识-基于数据结构进行-a002-列表-列表推导式
开发语言·数据结构·python
I'mChloe1 小时前
PTO-ISA 深度解析:PyPTO 范式生成的底层指令集与 NPU 算子执行的硬件映射
c语言·开发语言
编程小白20261 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习