pub trait BitAndAssign<Rhs = Self> {
// Required method
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§
1.8.0 · Sourcefn 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);Implementors§
impl BitAndAssign for bool
impl BitAndAssign for i8
impl BitAndAssign for i16
impl BitAndAssign for i32
impl BitAndAssign for i64
impl BitAndAssign for i128
impl BitAndAssign for isize
impl BitAndAssign for u8
impl BitAndAssign for u16
impl BitAndAssign for u32
impl BitAndAssign for u64
impl BitAndAssign for u128
impl BitAndAssign for usize
impl BitAndAssign for Ipv4Addr
impl BitAndAssign for Ipv6Addr
impl BitAndAssign for Saturating<i8>
impl BitAndAssign for Saturating<i16>
impl BitAndAssign for Saturating<i32>
impl BitAndAssign for Saturating<i64>
impl BitAndAssign for Saturating<i128>
impl BitAndAssign for Saturating<isize>
impl BitAndAssign for Saturating<u8>
impl BitAndAssign for Saturating<u16>
impl BitAndAssign for Saturating<u32>
impl BitAndAssign for Saturating<u64>
impl BitAndAssign for Saturating<u128>
impl BitAndAssign for Saturating<usize>
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 Wrapping<isize>
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<usize>
impl BitAndAssign<&bool> for bool
impl BitAndAssign<&i8> for i8
impl BitAndAssign<&i8> for Saturating<i8>
impl BitAndAssign<&i8> for Wrapping<i8>
impl BitAndAssign<&i16> for i16
impl BitAndAssign<&i16> for Saturating<i16>
impl BitAndAssign<&i16> for Wrapping<i16>
impl BitAndAssign<&i32> for i32
impl BitAndAssign<&i32> for Saturating<i32>
impl BitAndAssign<&i32> for Wrapping<i32>
impl BitAndAssign<&i64> for i64
impl BitAndAssign<&i64> for Saturating<i64>
impl BitAndAssign<&i64> for Wrapping<i64>
impl BitAndAssign<&i128> for i128
impl BitAndAssign<&i128> for Saturating<i128>
impl BitAndAssign<&i128> for Wrapping<i128>
impl BitAndAssign<&isize> for isize
impl BitAndAssign<&isize> for Saturating<isize>
impl BitAndAssign<&isize> for Wrapping<isize>
impl BitAndAssign<&u8> for u8
impl BitAndAssign<&u8> for Saturating<u8>
impl BitAndAssign<&u8> for Wrapping<u8>
impl BitAndAssign<&u16> for u16
impl BitAndAssign<&u16> for Saturating<u16>
impl BitAndAssign<&u16> for Wrapping<u16>
impl BitAndAssign<&u32> for u32
impl BitAndAssign<&u32> for Saturating<u32>
impl BitAndAssign<&u32> for Wrapping<u32>
impl BitAndAssign<&u64> for u64
impl BitAndAssign<&u64> for Saturating<u64>
impl BitAndAssign<&u64> for Wrapping<u64>
impl BitAndAssign<&u128> for u128
impl BitAndAssign<&u128> for Saturating<u128>
impl BitAndAssign<&u128> for Wrapping<u128>
impl BitAndAssign<&usize> for usize
impl BitAndAssign<&usize> for Saturating<usize>
impl BitAndAssign<&usize> for Wrapping<usize>
impl BitAndAssign<&Ipv4Addr> for Ipv4Addr
impl BitAndAssign<&Ipv6Addr> for Ipv6Addr
impl BitAndAssign<&Saturating<i8>> for Saturating<i8>
impl BitAndAssign<&Saturating<i16>> for Saturating<i16>
impl BitAndAssign<&Saturating<i32>> for Saturating<i32>
impl BitAndAssign<&Saturating<i64>> for Saturating<i64>
impl BitAndAssign<&Saturating<i128>> for Saturating<i128>
impl BitAndAssign<&Saturating<isize>> for Saturating<isize>
impl BitAndAssign<&Saturating<u8>> for Saturating<u8>
impl BitAndAssign<&Saturating<u16>> for Saturating<u16>
impl BitAndAssign<&Saturating<u32>> for Saturating<u32>
impl BitAndAssign<&Saturating<u64>> for Saturating<u64>
impl BitAndAssign<&Saturating<u128>> for Saturating<u128>
impl BitAndAssign<&Saturating<usize>> for Saturating<usize>
impl BitAndAssign<&Wrapping<i8>> for Wrapping<i8>
impl BitAndAssign<&Wrapping<i16>> for Wrapping<i16>
impl BitAndAssign<&Wrapping<i32>> for Wrapping<i32>
impl BitAndAssign<&Wrapping<i64>> for Wrapping<i64>
impl BitAndAssign<&Wrapping<i128>> for Wrapping<i128>
impl BitAndAssign<&Wrapping<isize>> for Wrapping<isize>
impl BitAndAssign<&Wrapping<u8>> for Wrapping<u8>
impl BitAndAssign<&Wrapping<u16>> for Wrapping<u16>
impl BitAndAssign<&Wrapping<u32>> for Wrapping<u32>
impl BitAndAssign<&Wrapping<u64>> for Wrapping<u64>
impl BitAndAssign<&Wrapping<u128>> for Wrapping<u128>
impl BitAndAssign<&Wrapping<usize>> for Wrapping<usize>
impl BitAndAssign<i8> for Saturating<i8>
impl BitAndAssign<i8> for Wrapping<i8>
impl BitAndAssign<i16> for Saturating<i16>
impl BitAndAssign<i16> for Wrapping<i16>
impl BitAndAssign<i32> for Saturating<i32>
impl BitAndAssign<i32> for Wrapping<i32>
impl BitAndAssign<i64> for Saturating<i64>
impl BitAndAssign<i64> for Wrapping<i64>
impl BitAndAssign<i128> for Saturating<i128>
impl BitAndAssign<i128> for Wrapping<i128>
impl BitAndAssign<isize> for Saturating<isize>
impl BitAndAssign<isize> for Wrapping<isize>
impl BitAndAssign<u8> for Saturating<u8>
impl BitAndAssign<u8> for Wrapping<u8>
impl BitAndAssign<u16> for Saturating<u16>
impl BitAndAssign<u16> for Wrapping<u16>
impl BitAndAssign<u32> for Saturating<u32>
impl BitAndAssign<u32> for Wrapping<u32>
impl BitAndAssign<u64> for Saturating<u64>
impl BitAndAssign<u64> for Wrapping<u64>
impl BitAndAssign<u128> for Saturating<u128>
impl BitAndAssign<u128> for Wrapping<u128>
impl BitAndAssign<usize> for Saturating<usize>
impl BitAndAssign<usize> for Wrapping<usize>
impl<'a, A, S, S2, D, E> BitAndAssign<&'a ArrayBase<S2, E>> for ArrayBase<S, D>
Perform self &= rhs as elementwise bit and (in place).
If their shapes disagree, rhs is broadcast to the shape of self.
Panics if broadcasting isn’t possible.
impl<A, S, D> BitAndAssign<A> for ArrayBase<S, D>
Perform self &= rhs as elementwise bit and (in place).