每个变量在rust中都有特定的数据类型,大致分为两类:标量与复合类类型。

一、标量类:

1、integer类型(
i代表的取值范围为:-2的n-1次方~2的n-1次方-1;
u代表的取值范围为:0~2的n次方-1;~~~~
):

    Length   Signed   Unsigned
    8-bit     i8        u8
    16-bit    i16       u16
    32-bit    i32       u32
    64-bit    i64       u64
    128-bit   i128      u128
    arch      isize     usize
    

2、Floating-Point类型:rust包含两种私有的float数据类型:f32和f64,例如:

fn main() {
    let x = 2.0; // f64

    let y: f32 = 3.0; // f32
}

数值之间的运算:rust支持基本的加减乘除数值运算,但是有一个基本的前提条件就是参与运算的数值必须是相同类型的数据变量,其计算结果类型也是相同的数据类型,例如:

fn main() {
    // 加
    let sum = 5 + 10; //15

    // 减
    let difference = 95.5 - 4.3; //91.2

    // 乘
    let product = 4 * 30; //120

    // 除
    let quotient = 56.7 / 32.2; //1.7608695652173911
    let quotient = 13 / 6; //2

    // 取余
    let remainder = 43 % 5;
}

3、Boolean类型:定义rust语言中的boolean变量比较简单,可以带上标识(bool)也可以不带上此标识,例如:

fn main() {
    let t = true;

    let f: bool = false;
}

二、复合类(rust通常包含两种内置的复合类数据类型:tuple与array):

1、tuple类型:

rust中元组是将多种类型的多个值组合为一个复合类型的一般方法。 元组的长度是固定的:声明后,它们就无法增长或缩小。
我们通过在括号内编写逗号分隔的值列表来创建元组。 元组中的每个位置都有一个类型,并且元组中不同值的类型不必相同。 例如,可选的类型注释:
fn main() {
    let tup: (i32, f64, u8) = (500, 6.4, 1);
}

变量tup绑定到整个元组,因为元组被视为单个复合元素。 为了从元组中取出单个值,可以使用模式匹配和变量.索引值来获取元组值,如下所示:

fn main() {
    let tup = (500, 6.4, 1);

    let (x, y, z) = tup;
    
    let firstValue = tup.0; //500

    println!("The value of y is: {}", y); //6.4
}

2、Array类型:

array类型与tuple的区别是数组中的所有变量的类型必须一致,且使用索引获取变量的时候索引值不能超过数组长度,其基本定义和使用与ts非常类似,例如:
fn main() {
    //定义一个全部都是整数类型的数组
    let a = [1, 2, 3, 4, 5];
    //定义一个全部都是str类型的数组:
    let months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
    定义一个定义好类型与固定长度的数组:
    let a: [i32; 5] = [1, 2, 3, 4, 5];
    定义一个含有默认值且大小固定的数组:
    let a = [3; 5]; //`let a = [3, 3, 3, 3, 3];`
    
    //获取数组中的值:
    let first_value = a[0]; //3
   
    //获取超过数组长度的时候,rust在编译的时候会报错,比如:
    let some_index_value = a[100]; //index out of bounds: the len is 5 but the index is 100
}

子康
10 声望0 粉丝