//! [`Uint`] bitwise not operations. use super::Uint; use crate::{Limb, Wrapping}; use core::ops::Not; impl Uint { /// Computes bitwise `!a`. #[inline(always)] pub const fn not(&self) -> Self { let mut limbs = [Limb::ZERO; LIMBS]; let mut i = 0; while i < LIMBS { limbs[i] = self.limbs[i].not(); i += 1; } Self { limbs } } } impl Not for Uint { type Output = Self; #[allow(clippy::needless_borrow)] fn not(self) -> ::Output { (&self).not() } } impl Not for Wrapping> { type Output = Self; fn not(self) -> ::Output { Wrapping(self.0.not()) } } #[cfg(test)] mod tests { use crate::U128; #[test] fn bitnot_ok() { assert_eq!(U128::ZERO.not(), U128::MAX); assert_eq!(U128::MAX.not(), U128::ZERO); } }