1 pub struct Overflow; 2 3 /// Negate `u64` checking for overflow. neg(value: u64) -> Result<i64, Overflow>4pub fn neg(value: u64) -> Result<i64, Overflow> { 5 if value <= 0x7fff_ffff_ffff_ffff { 6 Ok(-(value as i64)) 7 } else if value == 0x8000_0000_0000_0000 { 8 Ok(-0x8000_0000_0000_0000) 9 } else { 10 Err(Overflow) 11 } 12 } 13