blob: 676c1bafef1a2032b6a8790e15fea9f1aa7d51e2 [file] [log] [blame]
pub struct Overflow;
/// Negate `u64` checking for overflow.
pub fn neg(value: u64) -> Result<i64, Overflow> {
if value <= 0x7fff_ffff_ffff_ffff {
Ok(-(value as i64))
} else if value == 0x8000_0000_0000_0000 {
Ok(-0x8000_0000_0000_0000)
} else {
Err(Overflow)
}
}