複合型別

類型常值
陣列[T; N][20, 30, 40][0; 3]
元組()(T,)(T1, T2)()('x',)('x', 1.2)

陣列指派與存取:

fn main() {
    let mut a: [i8; 10] = [42; 10];
    a[5] = 0;
    println!("a: {:?}", a);
}

元組指派與存取:

fn main() {
    let t: (i8, bool) = (7, true);
    println!("1st index: {}", t.0);
    println!("2nd index: {}", t.1);
}

重要須知:

陣列:

  • 陣列型別 [T; N] 的值會保留同樣屬於 T 型別的 N (編譯時間常數) 元素。請注意,陣列的長度是「其型別的一部分」,也就是說 [u8; 3][u8; 4] 視為兩種不同型別。

  • 我們可以使用常值將值指派給陣列。

  • 在主函式中,輸出陳述式會使用 ? 格式參數要求偵錯實作:{} 提供預設輸出內容,{:?} 則提供偵錯輸出內容。我們也可以使用 {a}{a:?} 而不需指定格式字串後方的值。

  • 加入 # (例如 {a:#?}) 可叫用方便閱讀的「美化排版」格式。

元組:

  • 和陣列一樣,元組有固定的長度。

  • 元組會將不同型別的值組成複合型別。

  • 元組的欄位可透過點號和值的索引存取,例如 t.0t.1

  • 空白元組 () 也稱為「單位型別」。它既是型別,也是該型別唯一的有效值,亦即該型別及其值都以 () 表示。舉例來說,空白元組可用於表示函式或運算式沒有任何回傳值,我們會在之後的投影片看到這個例子。

    • 您可以將其視為其他程式設計語言中的 void,可能就不會感到陌生。