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§

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);

Implementors§

source§

impl BitAndAssign for bool

source§

impl BitAndAssign for i8

source§

impl BitAndAssign for i16

source§

impl BitAndAssign for i32

source§

impl BitAndAssign for i64

source§

impl BitAndAssign for i128

source§

impl BitAndAssign for isize

source§

impl BitAndAssign for u8

source§

impl BitAndAssign for u16

source§

impl BitAndAssign for u32

source§

impl BitAndAssign for u64

source§

impl BitAndAssign for u128

source§

impl BitAndAssign for usize

source§

impl BitAndAssign for EventFlags

source§

impl BitAndAssign for LockFlags

source§

impl BitAndAssign for VaultFreezeFlags

source§

impl BitAndAssign for I192

source§

impl BitAndAssign for I256

source§

impl BitAndAssign for I320

source§

impl BitAndAssign for I384

source§

impl BitAndAssign for I448

source§

impl BitAndAssign for I512

source§

impl BitAndAssign for I768

source§

impl BitAndAssign for U192

source§

impl BitAndAssign for U256

source§

impl BitAndAssign for U320

source§

impl BitAndAssign for U384

source§

impl BitAndAssign for U448

source§

impl BitAndAssign for U512

source§

impl BitAndAssign for U768

§

impl BitAndAssign for RefTypes

1.74.0 · source§

impl BitAndAssign for Saturating<i8>

1.74.0 · source§

impl BitAndAssign for Saturating<i16>

1.74.0 · source§

impl BitAndAssign for Saturating<i32>

1.74.0 · source§

impl BitAndAssign for Saturating<i64>

1.74.0 · source§

impl BitAndAssign for Saturating<i128>

1.74.0 · source§

impl BitAndAssign for Saturating<isize>

1.74.0 · source§

impl BitAndAssign for Saturating<u8>

1.74.0 · source§

impl BitAndAssign for Saturating<u16>

1.74.0 · source§

impl BitAndAssign for Saturating<u32>

1.74.0 · source§

impl BitAndAssign for Saturating<u64>

1.74.0 · source§

impl BitAndAssign for Saturating<u128>

1.74.0 · source§

impl BitAndAssign for Saturating<usize>

source§

impl BitAndAssign for Wrapping<i8>

source§

impl BitAndAssign for Wrapping<i16>

source§

impl BitAndAssign for Wrapping<i32>

source§

impl BitAndAssign for Wrapping<i64>

source§

impl BitAndAssign for Wrapping<i128>

source§

impl BitAndAssign for Wrapping<isize>

source§

impl BitAndAssign for Wrapping<u8>

source§

impl BitAndAssign for Wrapping<u16>

source§

impl BitAndAssign for Wrapping<u32>

source§

impl BitAndAssign for Wrapping<u64>

source§

impl BitAndAssign for Wrapping<u128>

source§

impl BitAndAssign for Wrapping<usize>

1.75.0 · source§

impl BitAndAssign for Ipv4Addr

1.75.0 · source§

impl BitAndAssign for Ipv6Addr

source§

impl BitAndAssign for BigInt

source§

impl BitAndAssign for BigUint

source§

impl BitAndAssign for Choice

1.22.0 · source§

impl BitAndAssign<&bool> for bool

1.22.0 · source§

impl BitAndAssign<&i8> for i8

1.22.0 · source§

impl BitAndAssign<&i8> for Saturating<i8>

1.22.0 · source§

impl BitAndAssign<&i8> for Wrapping<i8>

1.22.0 · source§

impl BitAndAssign<&i16> for i16

1.22.0 · source§

impl BitAndAssign<&i16> for Saturating<i16>

1.22.0 · source§

impl BitAndAssign<&i16> for Wrapping<i16>

1.22.0 · source§

impl BitAndAssign<&i32> for i32

1.22.0 · source§

impl BitAndAssign<&i32> for Saturating<i32>

1.22.0 · source§

impl BitAndAssign<&i32> for Wrapping<i32>

1.22.0 · source§

impl BitAndAssign<&i64> for i64

1.22.0 · source§

impl BitAndAssign<&i64> for Saturating<i64>

1.22.0 · source§

impl BitAndAssign<&i64> for Wrapping<i64>

1.22.0 · source§

impl BitAndAssign<&i128> for i128

1.22.0 · source§

impl BitAndAssign<&i128> for Saturating<i128>

1.22.0 · source§

impl BitAndAssign<&i128> for Wrapping<i128>

1.22.0 · source§

impl BitAndAssign<&isize> for isize

1.22.0 · source§

impl BitAndAssign<&isize> for Saturating<isize>

1.22.0 · source§

impl BitAndAssign<&isize> for Wrapping<isize>

1.22.0 · source§

impl BitAndAssign<&u8> for u8

1.22.0 · source§

impl BitAndAssign<&u8> for Saturating<u8>

1.22.0 · source§

impl BitAndAssign<&u8> for Wrapping<u8>

1.22.0 · source§

impl BitAndAssign<&u16> for u16

1.22.0 · source§

impl BitAndAssign<&u16> for Saturating<u16>

1.22.0 · source§

impl BitAndAssign<&u16> for Wrapping<u16>

1.22.0 · source§

impl BitAndAssign<&u32> for u32

1.22.0 · source§

impl BitAndAssign<&u32> for Saturating<u32>

1.22.0 · source§

impl BitAndAssign<&u32> for Wrapping<u32>

1.22.0 · source§

impl BitAndAssign<&u64> for u64

1.22.0 · source§

impl BitAndAssign<&u64> for Saturating<u64>

1.22.0 · source§

impl BitAndAssign<&u64> for Wrapping<u64>

1.22.0 · source§

impl BitAndAssign<&u128> for u128

1.22.0 · source§

impl BitAndAssign<&u128> for Saturating<u128>

1.22.0 · source§

impl BitAndAssign<&u128> for Wrapping<u128>

1.22.0 · source§

impl BitAndAssign<&usize> for usize

1.22.0 · source§

impl BitAndAssign<&usize> for Saturating<usize>

1.22.0 · source§

impl BitAndAssign<&usize> for Wrapping<usize>

1.22.0 · source§

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

1.22.0 · source§

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

1.22.0 · source§

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

1.22.0 · source§

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

1.22.0 · source§

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

1.22.0 · source§

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

1.22.0 · source§

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

1.22.0 · source§

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

1.22.0 · source§

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

1.22.0 · source§

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

1.22.0 · source§

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

1.22.0 · source§

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

1.22.0 · source§

impl BitAndAssign<&Wrapping<i8>> for Wrapping<i8>

1.22.0 · source§

impl BitAndAssign<&Wrapping<i16>> for Wrapping<i16>

1.22.0 · source§

impl BitAndAssign<&Wrapping<i32>> for Wrapping<i32>

1.22.0 · source§

impl BitAndAssign<&Wrapping<i64>> for Wrapping<i64>

1.22.0 · source§

impl BitAndAssign<&Wrapping<i128>> for Wrapping<i128>

1.22.0 · source§

impl BitAndAssign<&Wrapping<isize>> for Wrapping<isize>

1.22.0 · source§

impl BitAndAssign<&Wrapping<u8>> for Wrapping<u8>

1.22.0 · source§

impl BitAndAssign<&Wrapping<u16>> for Wrapping<u16>

1.22.0 · source§

impl BitAndAssign<&Wrapping<u32>> for Wrapping<u32>

1.22.0 · source§

impl BitAndAssign<&Wrapping<u64>> for Wrapping<u64>

1.22.0 · source§

impl BitAndAssign<&Wrapping<u128>> for Wrapping<u128>

1.22.0 · source§

impl BitAndAssign<&Wrapping<usize>> for Wrapping<usize>

1.75.0 · source§

impl BitAndAssign<&Ipv4Addr> for Ipv4Addr

1.75.0 · source§

impl BitAndAssign<&Ipv6Addr> for Ipv6Addr

source§

impl BitAndAssign<&BigInt> for BigInt

source§

impl BitAndAssign<&BigUint> for BigUint

1.74.0 · source§

impl BitAndAssign<i8> for Saturating<i8>

1.60.0 · source§

impl BitAndAssign<i8> for Wrapping<i8>

1.74.0 · source§

impl BitAndAssign<i16> for Saturating<i16>

1.60.0 · source§

impl BitAndAssign<i16> for Wrapping<i16>

1.74.0 · source§

impl BitAndAssign<i32> for Saturating<i32>

1.60.0 · source§

impl BitAndAssign<i32> for Wrapping<i32>

1.74.0 · source§

impl BitAndAssign<i64> for Saturating<i64>

1.60.0 · source§

impl BitAndAssign<i64> for Wrapping<i64>

1.74.0 · source§

impl BitAndAssign<i128> for Saturating<i128>

1.60.0 · source§

impl BitAndAssign<i128> for Wrapping<i128>

1.74.0 · source§

impl BitAndAssign<isize> for Saturating<isize>

1.60.0 · source§

impl BitAndAssign<isize> for Wrapping<isize>

1.74.0 · source§

impl BitAndAssign<u8> for Saturating<u8>

1.60.0 · source§

impl BitAndAssign<u8> for Wrapping<u8>

1.74.0 · source§

impl BitAndAssign<u16> for Saturating<u16>

1.60.0 · source§

impl BitAndAssign<u16> for Wrapping<u16>

1.74.0 · source§

impl BitAndAssign<u32> for Saturating<u32>

1.60.0 · source§

impl BitAndAssign<u32> for Wrapping<u32>

1.74.0 · source§

impl BitAndAssign<u64> for Saturating<u64>

1.60.0 · source§

impl BitAndAssign<u64> for Wrapping<u64>

1.74.0 · source§

impl BitAndAssign<u128> for Saturating<u128>

1.60.0 · source§

impl BitAndAssign<u128> for Wrapping<u128>

1.74.0 · source§

impl BitAndAssign<usize> for Saturating<usize>

1.60.0 · source§

impl BitAndAssign<usize> for Wrapping<usize>

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, LaneCount<N>: SupportedLaneCount,

source§

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

source§

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

§

impl<const N: usize> BitAndAssign for BInt<N>

§

impl<const N: usize> BitAndAssign for BIntD8<N>

§

impl<const N: usize> BitAndAssign for BIntD16<N>

§

impl<const N: usize> BitAndAssign for BIntD32<N>

§

impl<const N: usize> BitAndAssign for BUint<N>

§

impl<const N: usize> BitAndAssign for BUintD8<N>

§

impl<const N: usize> BitAndAssign for BUintD16<N>

§

impl<const N: usize> BitAndAssign for BUintD32<N>

§

impl<const N: usize> BitAndAssign<&BInt<N>> for BInt<N>

§

impl<const N: usize> BitAndAssign<&BIntD8<N>> for BIntD8<N>

§

impl<const N: usize> BitAndAssign<&BIntD16<N>> for BIntD16<N>

§

impl<const N: usize> BitAndAssign<&BIntD32<N>> for BIntD32<N>

§

impl<const N: usize> BitAndAssign<&BUint<N>> for BUint<N>

§

impl<const N: usize> BitAndAssign<&BUintD8<N>> for BUintD8<N>

§

impl<const N: usize> BitAndAssign<&BUintD16<N>> for BUintD16<N>

§

impl<const N: usize> BitAndAssign<&BUintD32<N>> for BUintD32<N>