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

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

相关推荐
kebeiovo12 小时前
游戏服务端开发:Actor模型详解(Go语言)
开发语言·后端·golang
迷途呀13 小时前
Python:函数中的参数类型
开发语言·笔记·python·langchain·nlp
Herbert_hwt13 小时前
建立Java程序开发
java·开发语言
愚公移码14 小时前
蓝凌EKP18产品:流程虚拟机(PVM)
java·开发语言·前端
十月的皮皮14 小时前
stm20260720-从新手 C 到量产 STM32 工程:程序设计推导指南
c语言·开发语言·stm32·stm32cubemx·hal库
Echo缘15 小时前
嵌入式系统C语言资源分类与内存分布分析
c语言·开发语言
JaneConan15 小时前
鸿蒙 ArkUI 深水区:@Watch 和 @Observed,状态变了「自动跑」+ 嵌套对象「深层重绘」
开发语言·后端·ui·harmonyos
赤水无泪15 小时前
qt中图标、名称的设置方式
开发语言·qt
王莎莎-MinerU15 小时前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php
橘子海全栈攻城狮15 小时前
【最新源码】基于SpringBoot + Vue的超市管理系统的设计与实现D002
java·开发语言·vue.js·spring boot·后端·spring