元组类型

tuple.md
commit: ff6c3dc120ce6d06548b9045c43103f58720ee62
本章译文最后维护日期:2021-4-6

句法
TupleType :
      ( )
   | ( ( Type , )+ Type? )

元组类型是由其他类型的异构列表组合成的一类结构化类型1

元组类型的语法规则为一对圆括号封闭的逗号分割的类型列表。 为和圆括号类型区分开来,一元元组的元素类型后面需要有一个逗号。

元组类型的字段数量等同于其封闭的异构类型列表的长度。 字段的数量决定元组的元数(arity)。 有 n 个字段的元组叫做 n元元组(n-ary tuple)。 例如,有两个字段的元组就是二元元组。

元组的字段用它在列表中的位置数字来索引。 第一个字段索引为 0。 第二个字段索引为 1。 然后以此类推。 每个字段的类型都是元组类型列表中相同位置的类型。

出于方便和历史原因,不带元素(())的元组类型通常被称为单元(unit)单元类型(unit type)。 它的值也被称为单元单元值

元组类型的示例:

  • () (单元)
  • (f64, f64)
  • (String, i32)
  • (i32, String) (跟前一个示例类型不一样)
  • (i32, f64, Vec<String>, Option<bool>)

这种类型的值是使用元组表达式来构造的。 此外,如果没有其他有意义的值可供求得/返回,很多种表达式都将生成单元值。 元组字段可以通过元组索引表达式模式匹配来访问。

1

结构化类型的特点就是其内部对等位置的类型如果是相等的,那么这些结构化类型就是相等的。有关元组的标称类型版本,请参见元组结构体