Rust 变量和数据类型
2025/4/28...大约 2 分钟
Rust 变量和数据类型
变量与可变性
使用 let
关键字声明变量,变量默认是不可变的。
let x = 5; // 声明一个不可变变量 x,值为 5
变量是不可变的,使用 mut
关键字可以声明一个可变变量。
let mut x = 5; // 声明一个可变变量 x,值为 5
x = 6; // 修改 x 的值为 6
常量
常量使用 const
关键字声明。
const MAX_POINTS: u32 = 100; // 声明一个常量 MAX_POINTS,值为 100
- 常量必须指定类型。
- 常量不可以使用
mut
关键字声明。 - 常量可以在任何作用域中声明。
- 仅可以使用常量表达式来初始化常量 (值在编译时确定)。
变量遮蔽
可以使用相同的变量名来遮蔽之前声明的变量。
let x = 5; // 声明一个变量 x,值为 5
let x = 6; // 遮蔽之前的变量 x,值为 6,就是创建了一个新的变量 x,只不过名字相同而已
数据类型
Rust 的数据类型分为两大类:标量类型 (Scalar,表示一个单一的值) 和复合类型 (Compound,表示多个值的组合)。
标量类型
标量类型表示一个单一的值,分为四种:整数、浮点数、布尔值和字符。
整数类型
长度 | 有符号 | 无符号 |
---|---|---|
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
arch 是根据 CPU 的字长来决定的,32 位系统是 32 位,64 位系统是 64 位。
整型字面量
数值字面量 | 示例 |
---|---|
十进制 | 98_222 |
十六进制 | 0xff |
八进制 | 0o77 |
二进制 | 0b1111_0000 |
字节 | b'A ‘ |
浮点类型
- f32:4 字节
- f64:8 字节
默认是 f64。
布尔类型
- bool:true 或 false
大小为 1 字节。
字符类型
- char:4 字节,表示一个 Unicode 字符。
复合类型
复合类型表示多个值的组合,分为两种:元组和数组。
元组
不同数据类型的元素的集合。它的长度是固定的。
let my_tuple = ('A',1,1.2);
let tup: (i32,f64,u8) = (500,16.4,1);
let five_hundred = tup.0;
数组
相同数据类型的元素的集合。它的长度是固定的。
let my_arr = [1,2,3];
let my_arr_typed: [i32;3] = [1,2,3];
let a = [3;5]; // let a = [3,3,3,3,3];
let first = my_arr[0];