Rust之数据类型

开发环境

  • Windows 10
  • Rust 1.51

  • VS Code 1.55.2

Rust之数据类型_第1张图片

Rust中的主要数据类型

基本类型

  • 整型

Rust之数据类型_第2张图片

Rust之数据类型_第3张图片

  • 浮点类型

在Rust中,提供了f32f64两个关键字来定义浮点类型变量,默认是f64.

在Rust中,我们声明和定义整型变量时可以使用如下。

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

    // 减
    let difference = 95.5 - 4.3;

    // 乘
    let product = 4 * 30;

    // 除
    let quotient = 56.7 / 32.2;

    // 求余
    let remainder = 43 % 5;
}
  • 布尔类型

由关键字bool定义,取值时truefalse

示例:

let f: bool = false; 
  • 字符类型

通过引用来声明和定义。如下示例:

let c = 'z';
let z = 'ℤ';
let heart_eyed_cat = '';

复合类型

  • 元组类型

元组是将多个值与各种类型组合为一个复合类型的一般方法。元组有固定的长度:一旦声明,它们的长度不能增加或减小。

示例:

let tup: (i32, f64, u8) = (500, 6.4, 1);

变量tup绑定到整个元组,因为元组被认为是单个复合元素。要从元组中获取单个值,我们可以使用模式匹配来构造一个元组值,如下所示: 

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

    // 将x,y,z分别赋值tup.0, tup.1,tup.2 这段代码相当于
    // let x = tup.0;
    // let y = tup.1;
    // let z = tup.2;
    let (x, y, z) = tup;                      

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

除了通过模式匹配破坏结构之外,我们还可以使用句点(.)直接访问元组元素。后面是我们要访问的值的索引,如

fn main() {
    // 定义x元组,其中的类型分别是i32,f64和u8
    let x: (i32, f64, u8) = (500, 6.4, 1);

    // i32的变量定义并赋值
    let five_hundred = x.0;

    // f64的变量定义并赋值
    let six_point_four = x.1;

    // u8的变量定义并赋值
    let one = x.2;
}

  • 数组类型

拥有多个值集合的另一种方法是使用数组。与元组不同,数组的每个元素都必须具有相同的类型。Rust中的数组与其他语言中的数组不同,因为Rust中的数组有固定的长度,就像元组一样。

示例:

let a = [1, 2, 3, 4, 5];

您可以使用方括号编写数组的类型,括号中包括每个元素的类型、分号,然后是数组中的元素数,如下所示:

let a: [i32; 5] = [1, 2, 3, 4, 5];    // i32表示数据类型,5表示数组大小

还有一种简写, 

let a = [3; 5];     // 定义5个元素的数组a,并且各个元素的初始值为3,等价于let a = [3, 3, 3, 3, 3]

数据类型示例

下面我们看下数据类型的示例,这里还是沿用上次工程rust-demo。

Rust之数据类型_第4张图片

use std::io;

fn main() {
    let a = [1, 2, 3, 4, 5];               // 定义数组

    println!("Please enter an array index."); 

    let mut index = String::new();            // 可变的变量

    io::stdin()
        .read_line(&mut index)
        .expect("Failed to read line");       // 从控制台输入

// usize - 整数类型用来衡量数据大小的,它的位长度取决于所运行的目标平台,如果是 32 位架构的处理器将使用 32 位位长度整型。
    let index: usize = index                  
        .trim()
        .parse()
        .expect("Index entered was not a number");        // 判断输入的是不是数字

    // 将a数组的中下标为输入数字的元素值赋值给element
    // 风险:由于输入的index可能大于等于5,小于0,所以这里会存在数组越界的问题
    let element = a[index];                     

    println!(
        "The value of the element at index {} is: {}", 
        index, element 
    );                                          // 打印输入的下标和元素值
}

编译运行

cargo run

运行结果 

Rust之数据类型_第5张图片

本章重点

  • 基本数据类型
  • 复合数据类型

你可能感兴趣的:(Rust,rust)