2026-08-27
checked_increment.rs
fn increment(x: u8) -> Option<u8> {
// write this: return x + 1, or None if that would overflow u8
}
incrementを実装してください。xに1を加えた値を返しますが、それがu8の範囲(255)を超える場合はNoneを返します。
Reference
fn increment(x: u8) -> Option<u8> {
x.checked_add(1)
}
Rustにはインクリメント演算子がないため、ついx + 1と書きたくなりますが、デバッグビルドではxが255のときにオーバーフローでパニックし、リリースビルドでは黙ってラップして0になってしまいます(どちらも意図しない結果です)。checked_addはオーバーフローする場合にNoneを返すので、呼び出し側に判断を委ねられます。これは参考実装であり、唯一の正解ではありません — 用途によってはwrapping_addやsaturating_addのほうが適切な場合もあります。