fn adding_will_overflow(x: i64, y: i64) -> bool {
(x > 0 && y > i64::MAX - x) || (x < 0 && y < i64::MIN - x)
}
// i64::MAX = 9223372036854775807
fn main() {
let x: i64 = 39839299;
let y: i64 = 1472783642;
println!("{}", if adding_will_overflow(x, y) { "true" } else { "false" });
let x: i64 = 9223372036854775807;
let y: i64 = 1;
println!("{}", if adding_will_overflow(x, y) { "true" } else { "false" });
}
/*
run:
false
true
*/