Namaran

Code daily. Without assist.

2026-08-24

last.rs

fn last(nums: &[i32]) -> i32 {
    nums[nums.len() - 1]
}

last(&[])を呼び出すとパニックします。空のスライスでもクラッシュしないように直してください。

Answer

numsが空のとき、nums.len() - 1はアンダーフローします(usizeでは0 - 1はパニックします)。それを抜きにしても、空のスライスへのインデックスアクセス自体がパニックします。常に最後の要素があると仮定せず、Optionを返すようにしてください:

fn last(nums: &[i32]) -> Option<i32> {
    nums.last().copied()
}