use crate::{BitOr, BitOrAssign, BoxedUint, CtOption};
impl BoxedUint {
#[inline(always)]
#[must_use]
pub fn bitor(&self, rhs: &Self) -> Self {
Self::map_limbs(self, rhs, crate::limb::Limb::bitor)
}
#[must_use]
pub fn wrapping_or(&self, rhs: &Self) -> Self {
self.bitor(rhs)
}
#[must_use]
pub fn checked_or(&self, rhs: &Self) -> CtOption<Self> {
CtOption::some(self.bitor(rhs))
}
}
impl BitOr for BoxedUint {
type Output = Self;
fn bitor(self, rhs: Self) -> BoxedUint {
self.bitor(&rhs)
}
}
impl BitOr<&BoxedUint> for BoxedUint {
type Output = BoxedUint;
#[allow(clippy::needless_borrow)]
fn bitor(self, rhs: &BoxedUint) -> BoxedUint {
(&self).bitor(rhs)
}
}
impl BitOr<BoxedUint> for &BoxedUint {
type Output = BoxedUint;
fn bitor(self, rhs: BoxedUint) -> BoxedUint {
self.bitor(&rhs)
}
}
impl BitOr<&BoxedUint> for &BoxedUint {
type Output = BoxedUint;
fn bitor(self, rhs: &BoxedUint) -> BoxedUint {
self.bitor(rhs)
}
}
impl BitOrAssign for BoxedUint {
fn bitor_assign(&mut self, other: Self) {
Self::bitor_assign(self, &other);
}
}
impl BitOrAssign<&BoxedUint> for BoxedUint {
fn bitor_assign(&mut self, other: &Self) {
for (a, b) in self.limbs.iter_mut().zip(other.limbs.iter()) {
*a |= *b;
}
}
}