Rust学习笔记
本文最新更新于 2025/02/08 晚上
1、安装与配置
1.1 安装

双击打开会弹出命令行窗口,直接回车即可。
查看是否安装成功
1 |
|
查看rust版本环境
1 |
|
安装生产版本
1 |
|
切换版本环境
1 |
|
1.2 编译命令
文件编译
1 |
|
2、包管理
2.1 包管理工具Cargo
创建项目
1 |
|
构建项目
会出现一个名为target
文件夹
1 |
|

检测
1 |
|
运行/测试
1 |
|
项目结构

2.2 Cargo.toml文件
- package
- 设置版本名
- 版本等
- dependencies
- 设置依赖
- [build-dependencies]列出了在构建项目时需要的依赖项
- [dev-dependencies]列出了只在开发时需要的依赖项
2.3 加载库
填写依赖项后保存会自动加载依赖项

推荐使用cargo-edit
安装cargo-edit
1 |
|
添加库
1 |
|
安装指定版本
1 |
|
添加开发时用的依赖库
1 |
|
添加构建时用的依赖库
1 |
|
删除库
1 |
|
2.4 设置国内源
推荐使用rsproxy
在C:\Users\23984\.cargo\.config
但是我没有找到
3、基本类型
3.1 变量与不可变性
- 使用
let
声明变量 - 后置类型定义
- 变量使用蛇形命名法,枚举和结构体命名使用帕斯卡命名法
- 强制类型转换
Casting a Value to a Different Type
- 使用
mut
关键词将变量置为可变


3.2 常量与静态变量
常量
- 常量的值在编译时已知,必须指定类型与值
- 与C不同,Rust的const常量值被直接嵌入到生成的底层机器代码中,而不是简单字符替换
- 常量名与静态变量名必须全部大写,单词之间加下划线
- 常来那个的作用域是块级作用域,只在声明他们的作用域内可见
static静态变量
- 在运行时分配内存
- 并不是不可变的,可使用unsafe修改
- 静态变量的生命周期为整个程序的运行时间

3.3 基本数据类型
Integer types
: 默认推断为i32
- i8、i16、i32、i64、i128
Unsigned Integer types
- u8、u16、u32、u64、u128
- platform-specific integer type(由平台决定)
- usize
- isize
- Float Types
- f32与f64
- 尽量用f64
- Boolean Values
- true
- false
- Character Types
- Rust支持Unicode字符
- 表示char类型使用单引号
1 |
|


该2.4了
https://www.bilibili.com/video/BV15y421h7j7?spm_id_from=333.788.videopod.episodes&vd_source=33b50a4dd201d7564e6e63d321809ce9&p=7
3.4 元祖和数组
相同点:
- 都是复合类型Compound Types,而Vec和Map都是集合类型Collection Types
- 元组和数组长度都是固定的
不同点:
- Tuples:不同类型的数据类型
- Arrays:同一类型的数据类型
数组:
创建方式
[a,b,c]
[value;size]
获取元素
arr[index]
获取长度
arr.len()
元组:
- 获取数据:tup.index
- 没有len()
- 默认返回值
Emoty Tuple()
- 元组和数组都是可以直接打印的;
println!("{:?}",arr);
- 赋值默认都是
copy
操作;
string赋值时是move
操作,会转移所有权,不能再打印。

4、Ownership与结构体、枚举
4.1 Rust的内存管理模型


1、所有权系统
- 每个值都有一个与之关联的变量,该变量是该值的所有者
- 同一时间只能有一个所有者
- 当所有者离开作用域时,它拥有的值将被丢弃
2、RAII原则
资源获取即初始化原则。当对象被创建时,它会获取必要的资源,并在生命周期结束时释放这些资源。
https://blog.csdn.net/CrystalLawson/article/details/138190719
Rust学习笔记
http://example.com/2025/02/08/037 Rust学习笔记/