数据类型

Rust 是静态类型语言,绝大多数类型在编译期确定。类型与 所有权、借用与引用 规则共同决定值在栈/堆上的布局与移动行为。


标量类型(Scalar)

分类类型举例说明
有符号整数i8 … i128, isizeisize 与指针同宽
无符号整数u8 … u128, usize索引、长度常用 usize
浮点f32, f64默认浮点字面量为 f64
布尔booltrue / false
字符char4 字节 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.tomlCargo与包管理

相关链接