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()
}