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, oru64. | 
| 类型 | 最大值 | 
|---|
| 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, ori64. | 
| 类型 | 最小值 | 
|---|
| 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, ori64. | 
| 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