Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Типы кортежей

Syntax
TupleType
      ( )
    | ( ( Type , )+ Type? )

Типы кортежей — это семейство структурных типов1 для гетерогенных списков других типов.

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

Одноэлементные кортежи требуют запятую после типа их элемента, чтобы быть отличимыми от типа в скобках.

Тип кортежа имеет количество полей, равное длине списка типов. Это количество полей определяет арность кортежа. Кортеж с n полями называется n-арным кортежем. Например, кортеж с 2 полями является 2-арным кортежем.

Поля кортежей именуются с использованием возрастающих числовых имен, соответствующих их позиции в списке типов. Первое поле — 0. Второе поле — 1. И так далее. Тип каждого поля — это тип той же позиции в списке типов кортежа.

Для удобства и по историческим причинам тип кортежа без полей (()) часто называют единицей или типом единицы. Его единственное значение также называют единицей или значением единицы.

Некоторые примеры типов кортежей:

  • () (единица)
  • (i32,) (1-арный кортеж)
  • (f64, f64)
  • (String, i32)
  • (i32, String) (другой тип по сравнению с предыдущим примером)
  • (i32, f64, Vec<String>, Option<bool>)

Значения этого типа конструируются с использованием выражения кортежа. Кроме того, различные выражения будут производить значение единицы, если для них нет другого значимого значения для вычисления.

К полям кортежа можно обращаться либо с помощью выражения индексации кортежа, либо сопоставления с образцом.


  1. Структурные типы всегда эквивалентны, если их внутренние типы эквивалентны. Для номинальной версии кортежей см. кортежные структуры.