3. Rust 内建类型 🟢
基本类型
Rust 提供了各种内建类型,C/C++ 开发者应该对这些类型感到很熟悉。
| 类别 | 类型 | 示例 |
|---|---|---|
| 有符号整数 | i8, i16, i32, i64, i128, isize | -1, 42, 1_000_000 |
| 无符号整数 | u8, u16, u32, u64, u128, usize | 0, 42u32, 42u64 |
| 浮点数 | f32, f64 | 0.0, 3.14159 |
| 布尔值 | bool | true, false |
| 字符 | char | 'a', '😊' (4 字节 Unicode) |
变量与可变性
在 Rust 中,变量 默认是不可变的。若要使变量可变,必须显式地使用 mut 关键字。
fn main() {
let x = 5; // x 是不可变的
// x = 6; // ❌ 编译错误
let mut y = 5; // y 是可变的
y = 6; // ✅ 正确
}
类型标注与推断
Rust 具备强大的类型推断能力,但也允许进行显式的类型标注。
fn main() {
let a: i32 = 42; // 显式标注
let b = 42u32; // 后缀标注
let c = 42; // 根据使用情况推断(默认为 i32)
}
函数签名
与变量不同,函数参数和返回值 必须 具有显式的类型标注。
#![allow(unused)]
fn main() {
fn add(x: i32, y: i32) -> i32 {
x + y // 没有分号 = 返回表达式
}
}
变量遮蔽 (Shadowing)
Rust 允许你声明一个与之前变量同名的新变量,从而实际上“遮蔽”了原始变量。这在不创建新名称的情况下更改变量的类型或可变性时非常有用。
fn main() {
let x = 5;
let x = x + 1; // 遮蔽:第一个 'x' 此时已隐藏
let x = "hello"; // 你甚至可以借此更改类型
}