1. 基本类型
-
数值类型:
- 有符号整数:
i8,i16,i32,i64,i128,isize - 无符号整数:
u8,u16,u32,u64,u128,usize - 浮点数:
f32(单精度),f64(双精度,默认)
注意 :
isize和usize的大小取决于目标平台的指针大小(32 位平台为 4 字节,64 位平台为 8 字节) - 有符号整数:
-
字符串切片 :
&str -
布尔类型 :
true和false -
字符类型 :
char表示单个 Unicode 字符(存储为 4 字节),如'A','中','😻' -
单元类型 :
(),其唯一可能的值也是()
**isize /usize **
-
isize :有符号 整型,宽度 = 系统指针大小(32 位系统 = 32bit,64 位系统 = 64bit)
-
usize :无符号 整型,宽度 = 系统指针大小(同上)
-
唯一用途 :用于数组 / 集合索引、长度、内存地址偏移
-
核心规则 :Rust 容器下标、长度必须用 usize
-
取值范围
:
- 64 位系统:usize 0~2⁶⁴-1;isize -2⁶³ ~ 2⁶³-1
- 32 位系统:usize 0~2³²-1;isize -2³¹ ~ 2³¹-1
2.Range 序列
定义 :start..end 左闭右开区间 [start, end)
基础写法
1..5→ 1,2,3,41..=5→ 1,2,3,4,5(包含右端点)
类型
..:RangeFulla..:RangeFrom..b:RangeToa..=b:RangeInclusive
用途
- for 循环遍历:
for i in 0..10 {} - 切片索引:
arr[2..5] - 区间判断:
(1..10).contains(&3)
特点
-
轻量、迭代器、不占额外内存
-
只能用于数字类型(整数为主)
a..b
→ 左闭右开[a, b)
a..=b→ 全闭区间[a, b]
..b→ 开头到 b(不含)[.., b)
..=b→ 开头到 b(含)[.., b]
a..→ a 到结尾[a, ..]
.. → 全部范围
other
1. 为何手动设置变量可变性?
- Rust 默认变量不可变(immutable),安全、并发安全、编译器优化。
- 必须显式加
mut才可变,可读性 + 安全性:一眼知道哪些会变。
2. 变量命名
- 字母、数字、下划线,以字母 / 下划线开头
- 大小写敏感,习惯 snake_case(下划线分隔)
- 不能用关键字、不能数字开头
3. 变量绑定
let x = 10;是绑定(binding),不是简单赋值- 将值绑定到变量,默认不可变、有所有权、作用域管理
4. 变量可变性
- 默认不可变:
let x = 1;不能修改 - 可变:
let mut x = 1;可重新赋值
5. 下划线忽略未使用变量
let _x = 10;编译器不提示「未使用变量」- 单独
let _;可忽略任意值
6. 变量解构(Destructuring)
let (a, b) = (1, 2);同时绑定多个变量- 可用于元组、结构体、枚举等
7. 解构式赋值
- 可在赋值语句直接解构:
(a, b) = (3, 4); - 对已有变量批量更新
8. 变量 vs 常量
- 变量:
let,可mut、可隐藏 (shadow)、可编译器自动推导类型 - 常量:
const,永远不可变、必须写类型、编译期值确定、无 mut