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 bool
impl<'a> BitAndAssign<&'a bool> for bool
impl BitAndAssign for usize
impl<'a> BitAndAssign<&'a usize> for usize
impl BitAndAssign for u8
impl<'a> BitAndAssign<&'a u8> for u8
impl BitAndAssign for u16
impl<'a> BitAndAssign<&'a u16> for u16
impl BitAndAssign for u32
impl<'a> BitAndAssign<&'a u32> for u32
impl BitAndAssign for u64
impl<'a> BitAndAssign<&'a u64> for u64
impl BitAndAssign for u128
impl<'a> BitAndAssign<&'a u128> for u128
impl BitAndAssign for isize
impl<'a> BitAndAssign<&'a isize> for isize
impl BitAndAssign for i8
impl<'a> BitAndAssign<&'a i8> for i8
impl BitAndAssign for i16
impl<'a> BitAndAssign<&'a i16> for i16
impl BitAndAssign for i32
impl<'a> BitAndAssign<&'a i32> for i32
impl BitAndAssign for i64
impl<'a> BitAndAssign<&'a i64> for i64
impl BitAndAssign for i128
impl<'a> BitAndAssign<&'a i128> for i128
impl BitAndAssign for i8x2
impl BitAndAssign for u8x2
impl BitAndAssign for b8x2
impl BitAndAssign for i16x2
impl BitAndAssign for u16x2
impl BitAndAssign for i8x4
impl BitAndAssign for u8x4
impl BitAndAssign for b8x4
impl BitAndAssign for i8x8
impl BitAndAssign for u8x8
impl BitAndAssign for b8x8
impl BitAndAssign for i16x4
impl BitAndAssign for u16x4
impl BitAndAssign for i32x2
impl BitAndAssign for u32x2
impl BitAndAssign for i8x16
impl BitAndAssign for u8x16
impl BitAndAssign for b8x16
impl BitAndAssign for i16x8
impl BitAndAssign for u16x8
impl BitAndAssign for i32x4
impl BitAndAssign for u32x4
impl BitAndAssign for i64x2
impl BitAndAssign for u64x2
impl BitAndAssign for i8x32
impl BitAndAssign for u8x32
impl BitAndAssign for b8x32
impl BitAndAssign for i16x16
impl BitAndAssign for u16x16
impl BitAndAssign for i32x8
impl BitAndAssign for u32x8
impl BitAndAssign for i64x4
impl BitAndAssign for u64x4
impl BitAndAssign for i8x64
impl BitAndAssign for u8x64
impl BitAndAssign for b8x64
impl BitAndAssign for i16x32
impl BitAndAssign for u16x32
impl BitAndAssign for i32x16
impl BitAndAssign for u32x16
impl BitAndAssign for i64x8
impl BitAndAssign for u64x8