Типы кортежей
Типы кортежей — это семейство структурных типов1 для гетерогенных списков других типов.
Синтаксис типа кортежа — это заключенный в круглые скобки, разделенный запятыми список типов.
Одноэлементные кортежи требуют запятую после типа их элемента, чтобы быть отличимыми от типа в скобках.
Тип кортежа имеет количество полей, равное длине списка типов.
Это количество полей определяет арность кортежа.
Кортеж с n полями называется n-арным кортежем.
Например, кортеж с 2 полями является 2-арным кортежем.
Поля кортежей именуются с использованием возрастающих числовых имен, соответствующих их позиции в списке типов.
Первое поле — 0.
Второе поле — 1.
И так далее.
Тип каждого поля — это тип той же позиции в списке типов кортежа.
Для удобства и по историческим причинам тип кортежа без полей (()) часто называют единицей или типом единицы.
Его единственное значение также называют единицей или значением единицы.
Некоторые примеры типов кортежей:
()(единица)(i32,)(1-арный кортеж)(f64, f64)(String, i32)(i32, String)(другой тип по сравнению с предыдущим примером)(i32, f64, Vec<String>, Option<bool>)
Значения этого типа конструируются с использованием выражения кортежа. Кроме того, различные выражения будут производить значение единицы, если для них нет другого значимого значения для вычисления.
К полям кортежа можно обращаться либо с помощью выражения индексации кортежа, либо сопоставления с образцом.
-
Структурные типы всегда эквивалентны, если их внутренние типы эквивалентны. Для номинальной версии кортежей см. кортежные структуры. ↩