数据类型
Rust 是静态类型语言,绝大多数类型在编译期确定。类型与 所有权、借用与引用 规则共同决定值在栈/堆上的布局与移动行为。
标量类型(Scalar)
| 分类 | 类型举例 | 说明 |
|---|---|---|
| 有符号整数 | i8 … i128, isize | isize 与指针同宽 |
| 无符号整数 | u8 … u128, usize | 索引、长度常用 usize |
| 浮点 | f32, f64 | 默认浮点字面量为 f64 |
| 布尔 | bool | true / false |
| 字符 | char | 4 字节 Unicode 标量,非与字节一一对应 |
整数字面量:0xff、0o77、0b1010、1_000u64。
复合类型(概览)
- 元组
(T, U, ...):定长异构,匿名。 - 数组
[T; N]:栈上定长同质;与 切片&[T]搭配使用见下文。 - 结构体与枚举:见 结构体与枚举。
String 与 str
str:不定长 UTF-8 切片类型,通常以&str(「字符串切片」)出现,指向某处有效 UTF-8 字节序列。String:堆分配、可增长、可改的所有权类型;与&str常通过&s/s.as_str()互转。
String 的内存由 所有权 管理;&str 多为借用,需满足 生命周期。
切片 &[T] 与 &str
切片是「对连续序列的视图」,由指针 + 长度描述,不拥有数据。
let a = [1, 2, 3, 4];
let s: &[i32] = &a[1..3];与数组相比:切片长度在类型层面是运行时的,API 上极其常见。
类型推断
局部变量常可省略注解,编译器从绑定值与使用处推断。函数签名、公有 API 建议显式写出类型以利文档与稳定接口。
Rust 基础目录索引
| 主题 | 笔记 |
|---|---|
| 所有权、移动、Copy | 所有权 |
& / &mut、规则 | 借用与引用 |
'a、结构体上的生命周期 | 生命周期 |
| struct / enum / Option | 结构体与枚举 |
match、if let | 模式匹配 |
| 泛型、trait | 泛型与Trait |
Result、? | 错误处理 |
| 线程、Send/Sync | 并发 |
| crate、Cargo.toml | Cargo与包管理 |