Skip to main content

BitAndAssign

Trait BitAndAssign 

1.8.0 (const: unstable) · Source
pub trait BitAndAssign<Rhs = Self> {
    // Required method
    fn bitand_assign(&mut self, rhs: Rhs);
}
Expand description

The bitwise AND assignment operator &=.

§Examples

An implementation of BitAndAssign that lifts the &= operator to a wrapper around bool.

use std::ops::BitAndAssign;

#[derive(Debug, PartialEq)]
struct Scalar(bool);

impl BitAndAssign for Scalar {
    // rhs is the "right-hand side" of the expression `a &= b`
    fn bitand_assign(&mut self, rhs: Self) {
        *self = Self(self.0 & rhs.0)
    }
}

let mut scalar = Scalar(true);
scalar &= Scalar(true);
assert_eq!(scalar, Scalar(true));

let mut scalar = Scalar(true);
scalar &= Scalar(false);
assert_eq!(scalar, Scalar(false));

let mut scalar = Scalar(false);
scalar &= Scalar(true);
assert_eq!(scalar, Scalar(false));

let mut scalar = Scalar(false);
scalar &= Scalar(false);
assert_eq!(scalar, Scalar(false));

Here, the BitAndAssign trait is implemented for a wrapper around Vec<bool>.

use std::ops::BitAndAssign;

#[derive(Debug, PartialEq)]
struct BooleanVector(Vec<bool>);

impl BitAndAssign for BooleanVector {
    // `rhs` is the "right-hand side" of the expression `a &= b`.
    fn bitand_assign(&mut self, rhs: Self) {
        assert_eq!(self.0.len(), rhs.0.len());
        *self = Self(
            self.0
                .iter()
                .zip(rhs.0.iter())
                .map(|(x, y)| *x & *y)
                .collect()
        );
    }
}

let mut bv = BooleanVector(vec![true, true, false, false]);
bv &= BooleanVector(vec![true, false, true, false]);
let expected = BooleanVector(vec![true, false, false, false]);
assert_eq!(bv, expected);

Required Methods§

1.8.0 (const: unstable) · Source

fn bitand_assign(&mut self, rhs: Rhs)

Performs the &= operation.

§Examples
let mut x = true;
x &= false;
assert_eq!(x, false);

let mut x = true;
x &= true;
assert_eq!(x, true);

let mut x: u8 = 5;
x &= 1;
assert_eq!(x, 1);

let mut x: u8 = 5;
x &= 2;
assert_eq!(x, 0);

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl BitAndAssign for BigInt

Source§

impl BitAndAssign for BigUint

Source§

impl BitAndAssign for subtle::Choice

Source§

impl BitAndAssign for ctutils::choice::Choice

1.75.0 (const: unstable) · Source§

impl BitAndAssign for Ipv4Addr

1.75.0 (const: unstable) · Source§

impl BitAndAssign for Ipv6Addr

Source§

impl BitAndAssign for Limb

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<i8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<i16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<i32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<i64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<i128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<isize>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<u8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<u16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<u32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<u64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<u128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<usize>

Source§

impl BitAndAssign for Style

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<i8>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<i16>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<i32>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<i64>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<i128>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<isize>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<u8>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<u16>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<u32>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<u64>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<u128>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for core::num::wrapping::Wrapping<usize>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for bool

1.8.0 (const: unstable) · Source§

impl BitAndAssign for i8

1.8.0 (const: unstable) · Source§

impl BitAndAssign for i16

1.8.0 (const: unstable) · Source§

impl BitAndAssign for i32

1.8.0 (const: unstable) · Source§

impl BitAndAssign for i64

1.8.0 (const: unstable) · Source§

impl BitAndAssign for i128

1.8.0 (const: unstable) · Source§

impl BitAndAssign for isize

1.8.0 (const: unstable) · Source§

impl BitAndAssign for u8

1.8.0 (const: unstable) · Source§

impl BitAndAssign for u16

1.8.0 (const: unstable) · Source§

impl BitAndAssign for u32

1.8.0 (const: unstable) · Source§

impl BitAndAssign for u64

1.8.0 (const: unstable) · Source§

impl BitAndAssign for u128

1.8.0 (const: unstable) · Source§

impl BitAndAssign for usize

Source§

impl BitAndAssign<&BigInt> for BigInt

Source§

impl BitAndAssign<&BigUint> for BigUint

1.75.0 (const: unstable) · Source§

impl BitAndAssign<&Ipv4Addr> for Ipv4Addr

1.75.0 (const: unstable) · Source§

impl BitAndAssign<&Ipv6Addr> for Ipv6Addr

Source§

impl BitAndAssign<&Limb> for Limb

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<i8>> for Saturating<i8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<i16>> for Saturating<i16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<i32>> for Saturating<i32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<i64>> for Saturating<i64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<i128>> for Saturating<i128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<isize>> for Saturating<isize>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<u8>> for Saturating<u8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<u16>> for Saturating<u16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<u32>> for Saturating<u32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<u64>> for Saturating<u64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<u128>> for Saturating<u128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<usize>> for Saturating<usize>

Source§

impl BitAndAssign<&Style> for Style

Source§

impl BitAndAssign<&Styles> for Style

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<i8>> for core::num::wrapping::Wrapping<i8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<i16>> for core::num::wrapping::Wrapping<i16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<i32>> for core::num::wrapping::Wrapping<i32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<i64>> for core::num::wrapping::Wrapping<i64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<i128>> for core::num::wrapping::Wrapping<i128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<isize>> for core::num::wrapping::Wrapping<isize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<u8>> for core::num::wrapping::Wrapping<u8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<u16>> for core::num::wrapping::Wrapping<u16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<u32>> for core::num::wrapping::Wrapping<u32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<u64>> for core::num::wrapping::Wrapping<u64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<u128>> for core::num::wrapping::Wrapping<u128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<usize>> for core::num::wrapping::Wrapping<usize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&bool> for bool

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&i8> for Saturating<i8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i8> for core::num::wrapping::Wrapping<i8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i8> for i8

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&i16> for Saturating<i16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i16> for core::num::wrapping::Wrapping<i16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i16> for i16

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&i32> for Saturating<i32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i32> for core::num::wrapping::Wrapping<i32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i32> for i32

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&i64> for Saturating<i64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i64> for core::num::wrapping::Wrapping<i64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i64> for i64

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&i128> for Saturating<i128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i128> for core::num::wrapping::Wrapping<i128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i128> for i128

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&isize> for Saturating<isize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&isize> for core::num::wrapping::Wrapping<isize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&isize> for isize

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&u8> for Saturating<u8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u8> for core::num::wrapping::Wrapping<u8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u8> for u8

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&u16> for Saturating<u16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u16> for core::num::wrapping::Wrapping<u16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u16> for u16

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&u32> for Saturating<u32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u32> for core::num::wrapping::Wrapping<u32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u32> for u32

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&u64> for Saturating<u64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u64> for core::num::wrapping::Wrapping<u64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u64> for u64

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&u128> for Saturating<u128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u128> for core::num::wrapping::Wrapping<u128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u128> for u128

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&usize> for Saturating<usize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&usize> for core::num::wrapping::Wrapping<usize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&usize> for usize

Source§

impl BitAndAssign<Styles> for Style

1.74.0 (const: unstable) · Source§

impl BitAndAssign<i8> for Saturating<i8>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<i8> for core::num::wrapping::Wrapping<i8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<i16> for Saturating<i16>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<i16> for core::num::wrapping::Wrapping<i16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<i32> for Saturating<i32>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<i32> for core::num::wrapping::Wrapping<i32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<i64> for Saturating<i64>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<i64> for core::num::wrapping::Wrapping<i64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<i128> for Saturating<i128>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<i128> for core::num::wrapping::Wrapping<i128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<isize> for Saturating<isize>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<isize> for core::num::wrapping::Wrapping<isize>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<u8> for Saturating<u8>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<u8> for core::num::wrapping::Wrapping<u8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<u16> for Saturating<u16>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<u16> for core::num::wrapping::Wrapping<u16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<u32> for Saturating<u32>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<u32> for core::num::wrapping::Wrapping<u32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<u64> for Saturating<u64>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<u64> for core::num::wrapping::Wrapping<u64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<u128> for Saturating<u128>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<u128> for core::num::wrapping::Wrapping<u128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<usize> for Saturating<usize>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<usize> for core::num::wrapping::Wrapping<usize>

Source§

impl<E, I> BitAndAssign for Integer<E, I>
where E: Environment, I: IntegerType,

Source§

impl<E> BitAndAssign for Boolean<E>
where E: Environment,

Source§

impl<T, S, A> BitAndAssign<&HashSet<T, S, A>> for hashbrown::set::HashSet<T, S, A>
where T: Eq + Hash + Clone, S: BuildHasher, A: Allocator,

Source§

impl<T, S, A> BitAndAssign<&HashSet<T, S, A>> for hashbrown::set::HashSet<T, S, A>
where T: Eq + Hash + Clone, S: BuildHasher, A: Allocator,

Source§

impl<T, U, const N: usize> BitAndAssign<U> for Simd<T, N>
where Simd<T, N>: BitAnd<U, Output = Simd<T, N>>, T: SimdElement,

Source§

impl<T, const N: usize> BitAndAssign for Mask<T, N>
where T: MaskElement,

Source§

impl<T, const N: usize> BitAndAssign<bool> for Mask<T, N>
where T: MaskElement,

Source§

impl<T> BitAndAssign for crypto_bigint::wrapping::Wrapping<T>
where T: Integer,

Source§

impl<T> BitAndAssign<&Wrapping<T>> for crypto_bigint::wrapping::Wrapping<T>
where T: Integer,

Source§

impl<const LIMBS: usize> BitAndAssign for Int<LIMBS>

Source§

impl<const LIMBS: usize> BitAndAssign for Uint<LIMBS>

Source§

impl<const LIMBS: usize> BitAndAssign<&Int<LIMBS>> for Int<LIMBS>

Source§

impl<const LIMBS: usize> BitAndAssign<&Uint<LIMBS>> for Uint<LIMBS>