Rust - 元组

  • 简述

    元组是一种复合数据类型。标量类型只能存储一种类型的数据。例如,一个 i32 变量只能存储一个整数值。在复合类型中,我们一次可以存储多个值,并且它可以是不同的类型。
    元组有一个固定的长度——一旦声明它们的大小就不能增长或缩小。元组索引从0.
  • 句法

    
    //Syntax1
    let tuple_name:(data_type1,data_type2,data_type3) = (value1,value2,value3);
    //Syntax2
    let tuple_name = (value1,value2,value3);
    

    Illustration

    以下示例显示元组中的值。
    
    fn main() {
       let tuple:(i32,f64,u8) = (-325,4.9,22);
       println!("{:?}",tuple);
    }
    
    println!("{:?}",tuple)的语法,不能使用在元组来显示值。这是因为元组是复合类型。使用println!("{:?}", tuple_name)语法打印元组中的值。

    输出

    
    (-325, 4.9, 22)
    

    Illustration

    以下示例打印元组中的各个值。
    
    fn main() {
       let tuple:(i32,f64,u8) = (-325,4.9,22);
       println!("integer is :{:?}",tuple.0);
       println!("float is :{:?}",tuple.1);
       println!("unsigned integer is :{:?}",tuple.2);
    }
    

    输出

    
    integer is :-325
    float is :4.9
    unsigned integer is :2
    

    Illustration

    以下示例将元组作为参数传递给函数。元组按值传递给函数。
    
    fn main(){
       let b:(i32,bool,f64) = (110,true,10.9);
       print(b);
    }
    //pass the tuple as a parameter
    fn print(x:(i32,bool,f64)){
       println!("Inside print method");
       println!("{:?}",x);
    }
    

    输出

    
    Inside print method
    (110, true, 10.9)
    
  • 破坏

    析构赋值是 Rust 的一个特性,我们在其中解包元组的值。这是通过将元组分配给不同的变量来实现的。
    考虑以下示例 -
    
    fn main(){
       let b:(i32,bool,f64) = (30,true,7.9);
       print(b);
    }
    fn print(x:(i32,bool,f64)){
       println!("Inside print method");
       let (age,is_male,cgpa) = x; //assigns a tuple to 
       distinct variables
       println!("Age is {} , isMale? {},cgpa is 
       {}",age,is_male,cgpa);
    }
    
    变量x是分配给 let 语句的元组。每个变量 - age、is_male 和 cgpa 将包含一个元组中的相应值。

    输出

    
    Inside print method
    Age is 30 , isMale? true,cgpa is 7.9