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 BitAndAssign for Wrapping<u8>impl BitAndAssign for Wrapping<u16>impl BitAndAssign for Wrapping<u32>impl BitAndAssign for Wrapping<u64>impl BitAndAssign for Wrapping<u128>impl BitAndAssign for Wrapping<isize>impl BitAndAssign for Wrapping<i8>impl BitAndAssign for Wrapping<i16>impl BitAndAssign for Wrapping<i32>impl BitAndAssign for Wrapping<i64>impl BitAndAssign for Wrapping<i128>impl BitAndAssign for boolimpl BitAndAssign for usizeimpl BitAndAssign for u8impl BitAndAssign for u16impl BitAndAssign for u32impl BitAndAssign for u64impl BitAndAssign for u128impl BitAndAssign for isizeimpl BitAndAssign for i8impl BitAndAssign for i16impl BitAndAssign for i32impl BitAndAssign for i64impl BitAndAssign for i128