Trait BitAndAssign

1.8.0 ยท 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 ยท 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ยง

1.8.0 ยท Sourceยง

impl BitAndAssign for bool

1.8.0 ยท Sourceยง

impl BitAndAssign for i8

1.8.0 ยท Sourceยง

impl BitAndAssign for i16

1.8.0 ยท Sourceยง

impl BitAndAssign for i32

1.8.0 ยท Sourceยง

impl BitAndAssign for i64

1.8.0 ยท Sourceยง

impl BitAndAssign for i128

1.8.0 ยท Sourceยง

impl BitAndAssign for isize

1.8.0 ยท Sourceยง

impl BitAndAssign for u8

1.8.0 ยท Sourceยง

impl BitAndAssign for u16

1.8.0 ยท Sourceยง

impl BitAndAssign for u32

1.8.0 ยท Sourceยง

impl BitAndAssign for u64

1.8.0 ยท Sourceยง

impl BitAndAssign for u128

1.8.0 ยท Sourceยง

impl BitAndAssign for usize

1.75.0 ยท Sourceยง

impl BitAndAssign for Ipv4Addr

1.75.0 ยท Sourceยง

impl BitAndAssign for Ipv6Addr

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>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<i8>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<i16>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<i32>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<i64>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<i128>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<isize>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<u8>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<u16>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<u32>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<u64>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<u128>

1.8.0 ยท Sourceยง

impl BitAndAssign for Wrapping<usize>

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.75.0 ยท Sourceยง

impl BitAndAssign<&Ipv4Addr> for Ipv4Addr

1.75.0 ยท Sourceยง

impl BitAndAssign<&Ipv6Addr> for Ipv6Addr

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.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>