基本

元組只是多個值的串聯:

  • 可能是不同型別的
  • 其數量和型別是靜態知道的

例如,(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 個元素)。支援具有更多元素的元組,但不實現標準特徵(儘管你可以為它們實現自己的特徵)。

希望將來能夠解除這一限制。