常见基础类型

Rust 的数据类型与C/C++的基本类型基本一致,但额外增加 128 bit 的整型、浮点型。变量的定义由关键词 let 开头。通常紧跟变量的修改能力的标识,使用 mut 表示定义一个可修改的变量,省略 mut 则默认为不可修改的常量。 与 C 语言相比,你需要知道 Rust 的舒适类型的定义有以下特点:

  • 使用 let 关键词定义
  • 变量的大小通常显式可知(除isize, usize 类型与平台相关)
  • 变量默认不能修改,如果需要修改需要 mut 修饰
  • 不强制手写变量类型,编译器可根据上下文自动推到出变量类型
  • 允许在同一上下文定义多次相同的变量名,且允许类型变化,前面定义的变量则自动释放,不能再使用。
  • 变量为强类型,不允许赋值非法的值到变量
  • 变量使用前必须赋值,不允许读未赋初始值的变量
  • Rust 的基础自带一些常用的方法。

无符号整型

类型最大值
u8255
u1665_535
u324_294_967_295
u6418_446_744_073_709_551_615
u128340_282_366_920_938_463_463_374_607_431_768_211_455
usize依赖平台指针大小, 可能大小为 u16u32, or u64.

有符号整型

类型最大值
i8127
i1632_767
i322_147_483_647
i649_223_372_036_854_775_807
i128170_141_183_460_469_231_731_687_303_715_884_105_727
isize依赖平台指针大小, 可能大小为 i16i32, 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依赖平台指针大小, 可能大小为 i16i32, or i64.

浮点类型

TypeMax valueMin pos valueMax lossless integer1
f16 🚧65536.0 ??2048 ?
f323.40 ⋅ 10 383.40 ⋅ 10 -3816_777_216
f641.79 ⋅ 10 3082.23 ⋅ 10 -3089_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