Учебники

Rust — Tuple

Tuple является составным типом данных. Скалярный тип может хранить только один тип данных. Например, переменная 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)

подрывающий

Разрушение присваивания — это особенность ржавчины, при которой мы распаковываем значения кортежа. Это достигается путем назначения кортежа различным переменным.

Рассмотрим следующий пример —

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 будет содержать соответствующие значения в кортеже.