Rust - 元组



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

元组具有固定长度——一旦声明,它们的大小就不能增长或缩小。元组索引从0开始。

语法

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

//Syntax2
let tuple_name = (value1,value2,value3);

示例

下面的示例显示元组中的值。

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

不能使用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);
}
//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
广告