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

Source§

impl BitAndAssign for Mod

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>

Source§

impl BitAndAssign for JoystickHats

Source§

impl BitAndAssign for Modifiers

Source§

impl BitAndAssign for m128

Source§

impl BitAndAssign for m128d

Source§

impl BitAndAssign for m128i

Source§

impl BitAndAssign for f32x4

Source§

impl BitAndAssign for f32x8

Source§

impl BitAndAssign for f64x2

Source§

impl BitAndAssign for f64x4

Source§

impl BitAndAssign for i8x16

Source§

impl BitAndAssign for i8x32

Source§

impl BitAndAssign for i16x8

Source§

impl BitAndAssign for i16x16

Source§

impl BitAndAssign for i32x4

Source§

impl BitAndAssign for i32x8

Source§

impl BitAndAssign for i64x2

Source§

impl BitAndAssign for u8x16

Source§

impl BitAndAssign for u16x8

Source§

impl BitAndAssign for u16x16

Source§

impl BitAndAssign for u32x4

Source§

impl BitAndAssign for u32x8

Source§

impl BitAndAssign for u64x2

Source§

impl BitAndAssign for u64x4

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>

Source§

impl BitAndAssign<&f32x4> for f32x4

Source§

impl BitAndAssign<&f32x8> for f32x8

Source§

impl BitAndAssign<&f64x2> for f64x2

Source§

impl BitAndAssign<&f64x4> for f64x4

Source§

impl BitAndAssign<&i8x16> for i8x16

Source§

impl BitAndAssign<&i8x32> for i8x32

Source§

impl BitAndAssign<&i16x8> for i16x8

Source§

impl BitAndAssign<&i16x16> for i16x16

Source§

impl BitAndAssign<&i32x4> for i32x4

Source§

impl BitAndAssign<&i32x8> for i32x8

Source§

impl BitAndAssign<&i64x2> for i64x2

Source§

impl BitAndAssign<&u8x16> for u8x16

Source§

impl BitAndAssign<&u16x8> for u16x8

Source§

impl BitAndAssign<&u16x16> for u16x16

Source§

impl BitAndAssign<&u32x4> for u32x4

Source§

impl BitAndAssign<&u32x8> for u32x8

Source§

impl BitAndAssign<&u64x2> for u64x2

Source§

impl BitAndAssign<&u64x4> for u64x4

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>