前端搞Rust 第三集 数据类型

178 阅读2分钟

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。

Rust 数据类型-标量类型

Rust是静态编译语言,在编译的时候要明确变量的类型 一般情况下, 编译器能够推导出变量的具体类型,不用特殊声明,但有时候类型复杂,数据转换的情况下需要明确

数字类型

整数类型

整数顾名思义没有小数部分 整数分为有符号(2n-2^n2n12^n-1) ,和无符号 0到2n12^n-1

有符号无符号占用空间(bit)
i8u88
i16u1616
i32u3232
i64u6464
i128u128128
archisizeusize
isize和usize 根据才做运行的计算决定

一定选择合适的数字类型

fn main() {
    let a: u8 = 257;
    println!("{}", a);
}

image.png

浮点类型

在Rust中浮点类型有两种 f32 单精度 和 f64 双精度 采用 IEEE-754(js也是采用的这个标准哟)

单精度浮点数占用4个字节(32位)存储空间来存储一个浮点数,包括符号位1位,阶码8位,尾数23位。 而双精度浮点数使用 8个字节(64位)存储空间来存储一个浮点数,包括符号位1位,阶码11位,尾数52位。

在rust 默认的浮点类型是f64,精度更高,不容易出错,对比f32性能差距可以忽略不计

布尔类型

同js一样, 两个值 true 和 false 占用一个字节

 fn main() {
    let a = true;
    let t = false;
}

字符类型

char最基础的单个字符

  • 单引号定义
  • 占用4个字节
  • 是Unicode,常见的中文,emoji表情都可以 范围在U+OOOO 到 U+D7FF and U+E000到 U+10FFFF
fn main() {
    let x = 'z';
    let y = '你';
}

复合类型

复合类型顾名思义,多个值放在同一个类型里面 rust中最最最基础的 元组和数组

元组

  • 可以是把多个类型多个值放在一起
  • 长度在声明时确定,一旦确定,不能修改 声明和使用
fn main() {
    let t: (i32, i8, u64) = (50, 50, 50); 
    let (x, y, z) = t; //也可以使用下标t.0,t.1,t.2
}

数组

  • 可以把同一类型的多个值放在一个类型里
  • 长度固定不可修改
fn main() {
    let a: [i32; 5] = [1, 2, 3, 4, 5];
    let b = [1; 5]; //相当于[1,1,1,1,1]
    a[0] //使用下标
}