Namaran

Code daily. Without assist.

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_addsaturating_addのほうが適切な場合もあります。