当前位置: 首页 > news >正文

011 Rust数组

Rust 数组

数组(Array)用一对中括号 [ ] 包括的相同类型且长度固定的数据。

数组的三要素:

  • 长度固定
  • 元素的类型必须相同
  • 依次线性排列(元素位置固定)

数组声明

方式一:类型推断

let array = [10, 20, 30, 40, 50]; // 推断元素类型和元素个数

方式二:明确元素类型和个数

let array:[i32; 5] = [10, 20, 30, 40, 50];

在这里插入图片描述

方式三:指定元素值和个数

let array= [5;10];  // 输出[5, 5, 5, 5, 5, 5, 5, 5, 5, 5]

数组元素访问

方式一:使用索引,索引从0开始

let arr = [10, 20, 30, 40];
let first = arr[0]; // 访问第一个元素 → 10
let third = arr[2]; // 访问第三个元素 → 30

索引越界检查
Rust 会在运行时检查索引有效性,越界访问会导致 panic:

let arr = [1, 2, 3];
// 编译通过但运行时报错:index out of bounds
let invalid = arr[5]; // ❌ panic: index 5 out of bounds

方式二:使用 get()方法【推荐】

使用 get()方法返回 Option<&T>,避免 panic:

let arr = ["a", "b", "c"];
match arr.get(2) {Some(val) => println!("Value: {}", val), // "Value: c"None => println!("Index out of bounds"),
}
let array= [5;10];
if let Some(val) = array.get(2) {println!("{:?}", val);  // 安全访问值,索引越界不会打印值
} 

多维数组访问

let matrix = [[1, 2], [3, 4], [5, 6]];
let element = matrix[1][0]; // 访问第二行第一列 → 3

方式三:通过切片访问

切片 (&[T]) 使用相同语法:

let arr = [10, 20, 30, 40];
let slice = &arr[1..3]; // [20, 30]
println!("{}", slice[1]); // 30

方式四:for…in迭代器遍历数组

let array= [5;10];
for item in array.iter(){println!("{}",item);        
} 

方式五:for…in索引下标访问

let array= [5;10];
for item in 0..array.len(){println!("{}",array[item]);        
}

方式六:while循环 + 索引下标

let array= [5;10];
let mut index = 0;
while index < 10 {println!("the value is: {}", array[index]);index += 1;        
}

方式七:loop循环 + 索引下标

let array= [5;10];
let mut index = 0;
loop {if index >= array.len() {break;}println!("the value is: {}", array[index]);index += 1;
}

想要修改数组元素的值,需要用mut关键字声明为可变数组。

let arr = [1,2,3,4,5]
// arr[0] = 10;  // 编译错误,arr是不可变数组
let mut arr2 = [10,20,30,40,50]
arr2[0] = 1;   // 正确,arr2为可变数组
http://www.dtcms.com/a/442631.html

相关文章:

  • 【贪心之临项交换】P8732 [蓝桥杯 2020 国 ABC]|普及
  • macOS 内核路由表操作:直接 API 编程指南
  • 如何做英文系统下载网站椒江做国际网站的公司
  • Linux常用命令使用大全,含运行示例。
  • 实战项目——前端
  • 基于Vue的园区农机管理系统的设计与实现toepr41x(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • Python 3.14.0rc3 新特性说明(对比3.13版本)
  • 中国建设基础设施公司网站网站建设要什么知识
  • 网站建设培训会讲话合肥做网站需要多少钱
  • Python爬虫四大核心工具解析
  • 用Python的psutil库来获取操作系统的内存详情示例
  • 如何选择网站关键词公司注册查询网
  • AmberTools25 发布
  • 【ROS2学习笔记】Launch 文件
  • 网站建设推广襄樊电子商务网站建设管理答案
  • 电子商务网站建设需要多少钱怎样注册企业邮箱
  • HTML 表格
  • 在JavaScript / HTML中,转移字符导致js生成的html出错
  • 手机网站格式商城jsp可以做网站首页吗
  • Docker 完整教程 | 从基础到实战(3,4)
  • 报告网站开发环境网站想做个链接怎么做
  • wordpress 站内搜索慢开源低代码
  • Sass 与 Bootstrap 5的区别是什么?
  • 福州+网站建设+医疗wordpress干嘛用的
  • o2o网站平台怎么做wordpress 3.8.1 漏洞
  • Linux根目录结构清单:一文掌握“伪目录”与19个关键文件夹
  • 总结网站推广策划书的共同特点广告网站模板下载 迅雷下载不了
  • 网站域名骗子做静态网站选用什么服务器
  • 老题新解|正常血压
  • WebRTC 入门与实战(一)之初级篇