Progrust Library.

// dictionary

配列型.

配列型[T; N]は、同じ型の要素を固定長で並べたプリミティブ型です。要素数Nはコンパイル時に確定する定数で、型自体の一部になります。そのため[i32; 3][i32; 4]は異なる型として扱われます。

fn main() {
    let scores: [i32; 3] = [80, 95, 70]; // 3科目の点数
    println!("2科目目: {}", scores[1]);
    println!("要素数: {}", scores.len());
}
Playgroundで開く

アクセス方法

方法①:添字

array[index]という添字アクセスで取得します。
添字はusize型である必要があります。
実行時に境界チェックされるため、範囲外を指定すると即座にパニックします。(添字が定数で範囲外が明らかな場合は、コンパイラが事前にエラーとして検出します)

fn main() {
    let scores: [i32; 3] = [80, 95, 70];
    println!("1科目目: {}", scores[0]);
}
Playgroundで開く

方法②:get

array.get(index)でも配列へアクセスできます。
getで取得するのはOptionなので、範囲外のインデックスが指定されたとしてもプログラムはパニックしません。

fn main() {
    let scores: [i32; 3] = [80, 95, 70];
    match scores.get(3) {
        // 範囲外でもパニックせずOptionで受け取れる
        Some(score) => println!("4科目目: {}", score),
        None => println!("4科目目のデータはありません"),
    }
}
Playgroundで開く

補足

同じ値で埋めるリピート式

[value; N]という書き方(リピート式)で、同じ値をN個並べた配列を初期化できます。要素数が2以上の場合、valueCopyを実装した型の値であるか、const項目またはconstブロックである必要があります(The Rust Reference, Array expressions)。

fn main() {
    let zeros: [i32; 5] = [0; 5]; // 0を5個並べる
    println!("{:?}", zeros);
}
Playgroundで開く
可変長が必要ならVec<T>

配列は要素数が固定でコンパイル時に決まります(ローカル変数に束縛した場合は通常スタック上に置かれますが、Box<[T; N]>のようにヒープへ置くこともできます)。実行時に要素数が変わるデータを扱いたい場合は、データをヒープ上に確保して伸縮できる、標準ライブラリベクタ(Vec)を使います。

この辞書が使われているページ

backlinks 9

  1. 辞書for式
  2. 辞書スライス
  3. 辞書タプル型
  4. 辞書プリミティブ型
  5. 辞書ベクタ(Vec)
  6. 辞書自動参照・自動参照外し
  7. 辞書範囲式
  8. 辞書文字列リテラル
  9. 動かして学ぶRustプログラミング問題集 › 第5章 タプルと配列・スライス