X
首页
最能打的中国芯评选
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
语言
中文
EN
嵌入式Rust活动专区
[原创] 【年终回炉:嵌入式rust训练营】2.rust编程试炼之冒泡排序
_shenlan_
2026-2-6 16:54
楼主
## 一、项目初始化 打开PowerShell,切换到项目目录rust_prom,新建并且初始化项目 ```powershell cargo new bubble_sort ``` 并用vsCode打开src/main.rs 初始化后结构如下所示  # 二、程序编写 根据训练营视频,打开main.rs,编写冒泡排序程序。 ```rust use rand; const TEST_ARR_COUNT:usize=16; fn main() { let mut test_arr:[i32;TEST_ARR_COUNT]=[0;TEST_ARR_COUNT]; for t in &mut test_arr{ *t=rand::random_range(-100..100); } println!("{:?}",test_arr); println!("before{:?}",test_arr); bubble_sort(&mut test_arr); println!("after{:?}",test_arr); } pub fn bubble_sort(arr:&mut [i32]){ for i in 0..arr.len(){ for j in i+1..arr.len(){ if arr[i]>arr[j]{ let tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } } } } ``` 函数`bubble_sort`使用冒泡逻辑,实现一组数据的冒泡排序。 1. 包导入与常量定义 ```rust // 导入 rand 包,用于生成随机数 use rand; // 定义常量:测试数组的长度,类型显式指定为usize const TEST_ARR_COUNT: usize = 16; ``` 2. 主函数 main(程序唯一入口) Rust 程序的入口函数必须是` fn main() {}`,无参数、无显式返回值(隐式返回单元类型),程序从这里开始执行。主函数中有如下注意事项 关键细节: * 数组初始化` [0; TEST_ARR_COUNT]`:Rust 固定长度数组的批量初始化语法,格式为 [默认值; 长度],快速将所有元素初始化为指定值(这里是 0)。 * `&mut test_arr`:可变借用数组,Rust 中默认变量不可变,若要修改变量(如数组赋值、排序),必须通过 mut 声明可变性,再通过可变引用传递。 * `for t in &mut test_arr`:遍历数组的可变迭代器,t 是数组每个元素的可变引用 &mut i32,需通过解引用 *t 才能修改底层元素的值。 * `bubble_sort(&mut test_arr)`:将固定长度数组传递给接收冒泡排序的函数。 3. 冒泡排序函数 `bubble_sort` `pub` 修饰表示该函数跨模块可见. ## 三、程序运行及结果 在终端使用命令`cargo r`,自动编译并且运行。  我们发现before前自动生成的数组,经冒泡函数处理后为after的数组,已经从小到大排序完整。另外我还没有弄明白的是`&mut`以及`*`号的用法,在rust学习中,吃透它。如函数`bubble_sort(arr:&mut [i32])`的意义。
点赞
回复评论 (1)
沙发
Jacktang
&mut 和 * 是 Rust 所有权系统的核心。
&mut 确保安全可变访问,* 用于操作引用数据。在冒泡排序中,它俩可以让安全的数据修改。
点赞
2026-2-23 09:40
最新活动
罗德与施瓦茨—从天到地 从测试者角度 解读NTN技术
你晒单我买单2026第1期报名中,DigiKey得捷带您畅享好物!
有奖直播:AI基础设施技术测试周
免费申请《一本书讲透汽车功能安全:标准详解与应用实践》,挑战《ISO26262标准》共读,赢好礼
装备焕新月:e络盟Multicomp Pro系列产品,小投入,大升级 —— 装备焕新惊喜体验
MPS 机器人模块设计大赛报名重磅开启,锻造硬实力,让想法照进现实!
随便看看
请教 wince 断点调试,为什么设置的断点不停? 以前同样的断点就有效,现在不知道改了哪里,断点都不停了?
大型设计中 FPGA的多时钟设计策略.pdf
LC电路请教
求助:vxworks内核任务调度问题?
过滤驱动程序中IRP_MJ_SCSI的下一层是什么?
UCC3858的设计特点、引脚功能与电气参数
弱弱地问一下,78系列稳压器输入端短路什么意思?
呵呵,我想申请电子书下载板快的斑竹
把原理图复制到word里,然后转换成PDF原理图的标注就没了怎么办
【米尔MYD-YA15XC-T评测】+开箱上电测试
stellarislaunchpad 官方资源库和例子教程
code warrior 5.1打不开MCP文件
全国首例!72岁高位截瘫患者用意念吃油条、打麻将,浙大脑机接口创多项第一
LPC4337 IAP升级问题。
有的女人就像Windows 虽然很优秀
OP07的输出电流
diy了一个下载keil,cube等资源的网站,各位有需要试试的吗,免费的,不限速
扫盲帖:电感式DC-DC升压器原理
JDY-08蓝牙模块AT指令响应只能接收到第一个字符
关于直流无刷永磁电机的问题
往年今日
电机
物联网分布式架构[java实现]支持TCP/MODBUS转TCP
ESP8266 UART
怎么测试运算放大器的输入失调电压?
电容的通高频阻低频是什么意思?详细解释
手机充电器中输出电流和电压是什么意思?
电容的通高频阻低频是什么意思?详细解释
光电耦合器简介以及作用详解
用Excel作简单的仿真
dxp2004学习
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复