// Rust's explicit overflow policies. Plain `+` traps on signed and wraps on // unsigned in both languages; these are neither, so they are spelled out. fn main() { println!("{} {}", 250u8.saturating_add(10), 5u8.saturating_sub(10)); println!("{} {}", 200u8.saturating_mul(2), 100u8.saturating_mul(2)); println!("{} {}", 127i8.saturating_add(1), (-128i8).saturating_sub(1)); println!("{} {}", 127i8.saturating_mul(2), (-128i8).saturating_mul(2)); println!("{} {}", i32::MAX.saturating_add(1), i32::MIN.saturating_sub(1)); println!("{:?} {:?}", 250u8.checked_add(5), 250u8.checked_add(10)); println!("{:?} {:?}", 5u8.checked_sub(5), 5u8.checked_sub(6)); println!("{:?} {:?}", 100u8.checked_mul(2), 200u8.checked_mul(2)); println!("{:?} {:?}", 127i8.checked_add(0), 127i8.checked_add(1)); println!("{:?} {:?}", (-128i8).checked_sub(0), (-128i8).checked_sub(1)); println!("{} {}", 16u16.saturating_sub(16), 16u16.saturating_sub(24)); }