Вам решать, нужна ли проверка, и что делать, если она переполнена.
Если нет значимого результата в случае переполнения, вы можете вернуть Option::None
, например:
fn somemath(y: u32) -> Option<u32> {
let x: u32 = y.checked_mul(3)?.checked_add(2)?;
return Some(x);
}
fn somemath(y: u32) -> Option<u32> {
y.checked_mul(3)?.checked_add(2) // same, but shorter
}
Вы также можете проверить, достаточно ли малы входные данные, чтобы переполнение никогда не происходило. Или вы можете использовать больший тип для промежуточных значений (например, u64
здесь), чтобы получить действительный результат для любого u32
ввода.