Trait core::ops::BitAndAssign 1.8.0
[−]
[src]
#[lang = "bitand_assign"]pub trait BitAndAssign<Rhs = Self> { fn bitand_assign(&mut self, rhs: Rhs); }
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 = Scalar(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));Run
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 = BooleanVector(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);Run
Required Methods
fn bitand_assign(&mut self, rhs: Rhs)
Performs the &= operation.
Implementors
impl BitAndAssign for Wrapping<usize>impl<'a> BitAndAssign<&'a Wrapping<usize>> for Wrapping<usize>impl BitAndAssign for Wrapping<u8>impl<'a> BitAndAssign<&'a Wrapping<u8>> for Wrapping<u8>impl BitAndAssign for Wrapping<u16>impl<'a> BitAndAssign<&'a Wrapping<u16>> for Wrapping<u16>impl BitAndAssign for Wrapping<u32>impl<'a> BitAndAssign<&'a Wrapping<u32>> for Wrapping<u32>impl BitAndAssign for Wrapping<u64>impl<'a> BitAndAssign<&'a Wrapping<u64>> for Wrapping<u64>impl BitAndAssign for Wrapping<u128>impl<'a> BitAndAssign<&'a Wrapping<u128>> for Wrapping<u128>impl BitAndAssign for Wrapping<isize>impl<'a> BitAndAssign<&'a Wrapping<isize>> for Wrapping<isize>impl BitAndAssign for Wrapping<i8>impl<'a> BitAndAssign<&'a Wrapping<i8>> for Wrapping<i8>impl BitAndAssign for Wrapping<i16>impl<'a> BitAndAssign<&'a Wrapping<i16>> for Wrapping<i16>impl BitAndAssign for Wrapping<i32>impl<'a> BitAndAssign<&'a Wrapping<i32>> for Wrapping<i32>impl BitAndAssign for Wrapping<i64>impl<'a> BitAndAssign<&'a Wrapping<i64>> for Wrapping<i64>impl BitAndAssign for Wrapping<i128>impl<'a> BitAndAssign<&'a Wrapping<i128>> for Wrapping<i128>impl BitAndAssign for boolimpl<'a> BitAndAssign<&'a bool> for boolimpl BitAndAssign for usizeimpl<'a> BitAndAssign<&'a usize> for usizeimpl BitAndAssign for u8impl<'a> BitAndAssign<&'a u8> for u8impl BitAndAssign for u16impl<'a> BitAndAssign<&'a u16> for u16impl BitAndAssign for u32impl<'a> BitAndAssign<&'a u32> for u32impl BitAndAssign for u64impl<'a> BitAndAssign<&'a u64> for u64impl BitAndAssign for u128impl<'a> BitAndAssign<&'a u128> for u128impl BitAndAssign for isizeimpl<'a> BitAndAssign<&'a isize> for isizeimpl BitAndAssign for i8impl<'a> BitAndAssign<&'a i8> for i8impl BitAndAssign for i16impl<'a> BitAndAssign<&'a i16> for i16impl BitAndAssign for i32impl<'a> BitAndAssign<&'a i32> for i32impl BitAndAssign for i64impl<'a> BitAndAssign<&'a i64> for i64impl BitAndAssign for i128impl<'a> BitAndAssign<&'a i128> for i128impl BitAndAssign for i8x2impl BitAndAssign for u8x2impl BitAndAssign for b8x2impl BitAndAssign for i16x2impl BitAndAssign for u16x2impl BitAndAssign for i8x4impl BitAndAssign for u8x4impl BitAndAssign for b8x4impl BitAndAssign for i8x8impl BitAndAssign for u8x8impl BitAndAssign for b8x8impl BitAndAssign for i16x4impl BitAndAssign for u16x4impl BitAndAssign for i32x2impl BitAndAssign for u32x2impl BitAndAssign for i8x16impl BitAndAssign for u8x16impl BitAndAssign for b8x16impl BitAndAssign for i16x8impl BitAndAssign for u16x8impl BitAndAssign for i32x4impl BitAndAssign for u32x4impl BitAndAssign for i64x2impl BitAndAssign for u64x2impl BitAndAssign for i8x32impl BitAndAssign for u8x32impl BitAndAssign for b8x32impl BitAndAssign for i16x16impl BitAndAssign for u16x16impl BitAndAssign for i32x8impl BitAndAssign for u32x8impl BitAndAssign for i64x4impl BitAndAssign for u64x4impl BitAndAssign for i8x64impl BitAndAssign for u8x64impl BitAndAssign for b8x64impl BitAndAssign for i16x32impl BitAndAssign for u16x32impl BitAndAssign for i32x16impl BitAndAssign for u32x16impl BitAndAssign for i64x8impl BitAndAssign for u64x8