Trait core::ops::BitAndAssign 1.8.0
[−]
[src]
pub trait BitAndAssign<Rhs = Self> {
fn bitand_assign(&mut self, _: Rhs);
}The BitAndAssign trait is used to specify the functionality of &=.
Examples
In this example, the &= operator is lifted to a trivial Scalar type.
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) } } fn main() { 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
In this example, the BitAndAssign trait is implemented for a
BooleanVector struct.
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()); } } fn main() { 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)
The method for the &= operator
Implementors
impl BitAndAssign for core::num::Wrapping<usize>impl BitAndAssign for core::num::Wrapping<u8>impl BitAndAssign for core::num::Wrapping<u16>impl BitAndAssign for core::num::Wrapping<u32>impl BitAndAssign for core::num::Wrapping<u64>impl BitAndAssign for core::num::Wrapping<isize>impl BitAndAssign for core::num::Wrapping<i8>impl BitAndAssign for core::num::Wrapping<i16>impl BitAndAssign for core::num::Wrapping<i32>impl BitAndAssign for core::num::Wrapping<i64>impl BitAndAssign for core::num::Wrapping<u128>impl BitAndAssign for core::num::Wrapping<i128>impl BitAndAssign for boolimpl BitAndAssign for usizeimpl BitAndAssign for u8impl BitAndAssign for u16impl BitAndAssign for u32impl BitAndAssign for u64impl BitAndAssign for isizeimpl BitAndAssign for i8impl BitAndAssign for i16impl BitAndAssign for i32impl BitAndAssign for i64impl BitAndAssign for u128impl BitAndAssign for i128