Rust元组


元组是一种复合数据类型。

标量类型只能存储一种类型的数据,例如,一个i32变量只能存储一个整数值。在复合类型中,我们一次可以存储多个值,并且可以是不同类型。

元组的长度是固定的,一旦声明,它们就无法增长或缩小。

元组的索引从0开始

语法


//语法1
let tuple_name:(data_type1,data_type2,data_type3) = (value1,value2,value3);

//语法2
let tuple_name = (value1,value2,value3);

例子

以下示例在元组中显示值。

fn main() {
    let tuple:(i32,f64,u8) = (-325,4.9,22);
    println!("{:?}",tuple);
}

The println!(“ {}”,tuple) 语法不能用于显示元组中的值。这是因为元组是复合类型。使用 println!(“ {:?}”,tuple_name) 在元组中打印值的语法。

(-325, 4.9, 22)

例子

以下示例在元组中打印单个值。

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

例子

以下示例将元组作为参数传递给函数。元组通过值传递给函数。

fn main(){
    let b:(i32,bool,f64) = (110,true,10.9);
    print(b);
}
//将元组作为参数传递

fn print(x:(i32,bool,f64)){
    println!("Inside print method");
    println!("{:?}",x);
}
Inside print method
(110, true, 10.9)

解包


解包分配是的一个特征,其中我们将元组的值解包,这是通过将元组分配给不同的变量来实现的。

示例:

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; //将一个元组分配给
    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