Trait sp_std::ops::BitAndAssign 1.8.0[−][src]
pub trait BitAndAssign<Rhs = Self> { 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
fn bitand_assign(&mut self, rhs: Rhs)
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);