基本
元組只是多個值的串聯:
- 可能是不同型別的
- 其數量和型別是靜態知道的
例如,(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 個元素)。支援具有更多元素的元組,但不實現標準特徵(儘管你可以為它們實現自己的特徵)。
希望將來能夠解除這一限制。