Slices

スライスは、より大きなコレクションに対するビューを提供します。

fn main() {
    let mut a: [i32; 6] = [10, 20, 30, 40, 50, 60];
    println!("a: {a:?}");

    let s: &[i32] = &a[2..4];

    println!("s: {s:?}");
}
  • スライスは、スライスされた型からデータを借用します。
This slide should take about 10 minutes.
  • スライスを作成するには、a を借用し、開始インデックスと終了インデックスを角かっこで囲んで指定します。

  • スライスがインデックス 0 から始まる場合、Rust の範囲構文により開始インデックスを省略できます。つまり、&a[0..a.len()]&a[..a.len()] は同じです。

  • 最後のインデックスについても同じことが言えるので、&a[2..a.len()]&a[2..] は同じです。

  • 配列全体のスライスを簡単に作成するには、&a[..] と書くことが出来ます。

  • s は i32 のスライスへの参照です。s の型(&[i32])に配列の長さが含まれなくなったことに注目してください。これにより、さまざまなサイズのスライスに対して計算を実行できます。

  • スライスは常に別のオブジェクトから借用します。この例では、a は少なくともスライスが存在する間は「存続」 している(スコープ内にある)必要があります。