1 pub struct Overflow;
2 
3 /// Negate `u64` checking for overflow.
neg(value: u64) -> Result<i64, Overflow>4 pub 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