基本
元组只是多个值的串联:
- 可能是不同类型的
- 其数量和类型是静态知道的
例如,(1, "Hello")
是由 i32
和 &str
组成的 2 元素元组,其类型以与其值类似的方式表示为 (i32, &'static str)
。
要访问元组的元素,只需使用其索引:
let tuple = (1, "Hello");
println!("First element: {}, second element: {}", tuple.0, tuple.1);
因为元组是内置的,所以也可以在元组上使用模式匹配 :
match (1, "Hello") {
(i, _) if i < 0 => println!("Negative integer: {}", i),
(_, s) => println!("{} World", s),
}
特别案例
0 元素元组:()
也称为单位,单位类型或单例类型,用于表示缺少有意义的值。它是函数的默认返回类型(未指定 ->
时)。另请参阅: Rust 中的“type()
”是什么类型? 。
1 元素元组:(a,)
,带尾随逗号,表示 1 元素元组。没有逗号 (a)
的表单被解释为括在括号中的表达式,并且仅计算为 a
。
虽然我们在这里,但总是接受尾随逗号:(1, "Hello",)
。
限制
除了元组之外,今天的 Rust 语言不支持可变参数。因此,不可能简单地为所有元组实现特征,因此标准特征仅针对有限数量元素的元组实现(今天,包括最多 12 个元素)。支持具有更多元素的元组,但不实现标准特征(尽管你可以为它们实现自己的特征)。
希望将来能够解除这一限制。