問題一覧に戻る
初級所有権
問題35: 配列とスライス

配列は固定長で同じ型の要素を持つデータ構造です。[T; N]と表記し、Tは型、Nは要素数です。スライス&[T]は配列の一部(または全体)への参照で、長さが動的です。配列は所有権を持ちますが、スライスは借用です。関数の引数にはスライスを使うことで、配列やベクタなど様々なコレクションを受け取れます。

fn main() {
// 固定長配列
let arr: [i32; ] = [1, 2, 3, 4, 5];
println!("First: {}", arr[0]);

// 配列のスライス
let slice: [i32] = &arr[1..4];
println!("Slice length: {}", slice.len());

// スライスを受け取る関数
fn sum(numbers: [i32]) -> i32 {
let mut total = 0;
for &n in numbers {
total += n;
}
total
}

println!("Sum: {}", sum(arr));
}