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 core::num::wrapping::Wrapping<i8>
impl BitAndAssign for core::num::wrapping::Wrapping<i16>
impl BitAndAssign for core::num::wrapping::Wrapping<i32>
impl BitAndAssign for core::num::wrapping::Wrapping<i64>
impl BitAndAssign for core::num::wrapping::Wrapping<i128>
impl BitAndAssign for core::num::wrapping::Wrapping<isize>
impl BitAndAssign for core::num::wrapping::Wrapping<u8>
impl BitAndAssign for core::num::wrapping::Wrapping<u16>
impl BitAndAssign for core::num::wrapping::Wrapping<u32>
impl BitAndAssign for core::num::wrapping::Wrapping<u64>
impl BitAndAssign for core::num::wrapping::Wrapping<u128>
impl BitAndAssign for core::num::wrapping::Wrapping<usize>
impl BitAndAssign for subtle::Choice
impl BitAndAssign for BoxedUint
Available on crate feature
alloc only.impl BitAndAssign for crypto_bigint::Choice
impl BitAndAssign for Limb
impl BitAndAssign for crypto_bigint::Wrapping<BoxedUint>
Available on crate feature
alloc only.impl BitAndAssign<&bool> for bool
impl BitAndAssign<&i8> for i8
impl BitAndAssign<&i8> for Saturating<i8>
impl BitAndAssign<&i8> for core::num::wrapping::Wrapping<i8>
impl BitAndAssign<&i16> for i16
impl BitAndAssign<&i16> for Saturating<i16>
impl BitAndAssign<&i16> for core::num::wrapping::Wrapping<i16>
impl BitAndAssign<&i32> for i32
impl BitAndAssign<&i32> for Saturating<i32>
impl BitAndAssign<&i32> for core::num::wrapping::Wrapping<i32>
impl BitAndAssign<&i64> for i64
impl BitAndAssign<&i64> for Saturating<i64>
impl BitAndAssign<&i64> for core::num::wrapping::Wrapping<i64>
impl BitAndAssign<&i128> for i128
impl BitAndAssign<&i128> for Saturating<i128>
impl BitAndAssign<&i128> for core::num::wrapping::Wrapping<i128>
impl BitAndAssign<&isize> for isize
impl BitAndAssign<&isize> for Saturating<isize>
impl BitAndAssign<&isize> for core::num::wrapping::Wrapping<isize>
impl BitAndAssign<&u8> for u8
impl BitAndAssign<&u8> for Saturating<u8>
impl BitAndAssign<&u8> for core::num::wrapping::Wrapping<u8>
impl BitAndAssign<&u16> for u16
impl BitAndAssign<&u16> for Saturating<u16>
impl BitAndAssign<&u16> for core::num::wrapping::Wrapping<u16>
impl BitAndAssign<&u32> for u32
impl BitAndAssign<&u32> for Saturating<u32>
impl BitAndAssign<&u32> for core::num::wrapping::Wrapping<u32>
impl BitAndAssign<&u64> for u64
impl BitAndAssign<&u64> for Saturating<u64>
impl BitAndAssign<&u64> for core::num::wrapping::Wrapping<u64>
impl BitAndAssign<&u128> for u128
impl BitAndAssign<&u128> for Saturating<u128>
impl BitAndAssign<&u128> for core::num::wrapping::Wrapping<u128>
impl BitAndAssign<&usize> for usize
impl BitAndAssign<&usize> for Saturating<usize>
impl BitAndAssign<&usize> for core::num::wrapping::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 core::num::wrapping::Wrapping<i8>
impl BitAndAssign<&Wrapping<i16>> for core::num::wrapping::Wrapping<i16>
impl BitAndAssign<&Wrapping<i32>> for core::num::wrapping::Wrapping<i32>
impl BitAndAssign<&Wrapping<i64>> for core::num::wrapping::Wrapping<i64>
impl BitAndAssign<&Wrapping<i128>> for core::num::wrapping::Wrapping<i128>
impl BitAndAssign<&Wrapping<isize>> for core::num::wrapping::Wrapping<isize>
impl BitAndAssign<&Wrapping<u8>> for core::num::wrapping::Wrapping<u8>
impl BitAndAssign<&Wrapping<u16>> for core::num::wrapping::Wrapping<u16>
impl BitAndAssign<&Wrapping<u32>> for core::num::wrapping::Wrapping<u32>
impl BitAndAssign<&Wrapping<u64>> for core::num::wrapping::Wrapping<u64>
impl BitAndAssign<&Wrapping<u128>> for core::num::wrapping::Wrapping<u128>
impl BitAndAssign<&Wrapping<usize>> for core::num::wrapping::Wrapping<usize>
impl BitAndAssign<&BoxedUint> for BoxedUint
Available on crate feature
alloc only.impl BitAndAssign<&Limb> for Limb
impl BitAndAssign<&Wrapping<BoxedUint>> for crypto_bigint::Wrapping<BoxedUint>
Available on crate feature
alloc only.