Rust 的数据类型与C/C++的基本类型基本一致,但额外增加 128 bit 的整型、浮点型。变量的定义由关键词 let
开头。通常紧跟变量的修改能力的标识,使用 mut
表示定义一个可修改的变量,省略 mut 则默认为不可修改的常量。 与 C 语言相比,你需要知道 Rust 的舒适类型的定义有以下特点:
- 使用
let
关键词定义
- 变量的大小通常显式可知(除isize, usize 类型与平台相关)
- 变量默认不能修改,如果需要修改需要
mut
修饰
- 不强制手写变量类型,编译器可根据上下文自动推到出变量类型
- 允许在同一上下文定义多次相同的变量名,且允许类型变化,前面定义的变量则自动释放,不能再使用。
- 变量为强类型,不允许赋值非法的值到变量
- 变量使用前必须赋值,不允许读未赋初始值的变量
- Rust 的基础自带一些常用的方法。
类型 | 最大值 |
u8 | 255 |
u16 | 65_535 |
u32 | 4_294_967_295 |
u64 | 18_446_744_073_709_551_615 |
u128 | 340_282_366_920_938_463_463_374_607_431_768_211_455 |
usize | 依赖平台指针大小, 可能大小为 u16 , u32 , or u64 . |
类型 | 最大值 |
i8 | 127 |
i16 | 32_767 |
i32 | 2_147_483_647 |
i64 | 9_223_372_036_854_775_807 |
i128 | 170_141_183_460_469_231_731_687_303_715_884_105_727 |
isize | 依赖平台指针大小, 可能大小为 i16 , i32 , or i64 . |
类型 | 最小值 |
i8 | -128 |
i16 | -32_768 |
i32 | -2_147_483_648 |
i64 | -9_223_372_036_854_775_808 |
i128 | -170_141_183_460_469_231_731_687_303_715_884_105_728 |
isize | 依赖平台指针大小, 可能大小为 i16 , i32 , or i64 . |
Type | Max value | Min pos value | Max lossless integer1 |
f16 🚧 | 65536.0 ? | ? | 2048 ? |
f32 | 3.40 ⋅ 10 38 | 3.40 ⋅ 10 -38 | 16_777_216 |
f64 | 1.79 ⋅ 10 308 | 2.23 ⋅ 10 -308 | 9_007_199_254_740_992 |
f128 🚧 | ? | ? | ? |
fn main() {
let mut v_i32: i32 = 10;
v_i32 += 10;
let v_u32: u32 = v_i32 as u32 * 2;
let v_u8 = 0xffu8;
let v_f32 = core::f32::consts::PI;
let v_f64 = 5.1;
println!("{} {} {} {} {}", v_u32, v_i32, v_u8, v_f32, v_f64);
println!("i8: {},({}, {})", size_of::<i8>(), i8::MIN, i8::MAX,);
println!("i16: {},({}, {})", size_of::<i16>(), i16::MIN, i16::MAX,);
println!("i32: {},({}, {})", size_of::<i32>(), i32::MIN, i32::MAX,);
println!("i64: {},({}, {})", size_of::<i64>(), i64::MIN, i64::MAX,);
println!("i128: {},({}, {})", size_of::<i128>(), i128::MIN, i128::MAX,);
}
Rust Language Cheat Sheet