Skip to main content

BitAndAssign

Trait BitAndAssign 

1.8.0 (const: unstable) · Source
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 (const: unstable) · Source

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);

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl BitAndAssign for Access

Source§

impl BitAndAssign for AtFlags

Source§

impl BitAndAssign for CapabilitiesSecureBits

Source§

impl BitAndAssign for CapabilitySet

Source§

impl BitAndAssign for ControlModes

Source§

impl BitAndAssign for rustix::backend::event::epoll::CreateFlags

Source§

impl BitAndAssign for rustix::backend::fs::inotify::CreateFlags

Source§

impl BitAndAssign for DupFlags

Source§

impl BitAndAssign for EventFlags

Source§

impl BitAndAssign for EventfdFlags

Source§

impl BitAndAssign for FallocateFlags

Source§

impl BitAndAssign for FdFlags

Source§

impl BitAndAssign for taproot_c_scape::printf_impl::argument::Flags

Source§

impl BitAndAssign for rustix::backend::thread::futex::Flags

Source§

impl BitAndAssign for FloatingPointEmulationControl

Source§

impl BitAndAssign for FloatingPointExceptionMode

Source§

impl BitAndAssign for GetRandomFlags

Source§

impl BitAndAssign for IFlags

Source§

impl BitAndAssign for InputModes

1.75.0 (const: unstable) · Source§

impl BitAndAssign for Ipv4Addr

1.75.0 (const: unstable) · Source§

impl BitAndAssign for Ipv6Addr

Source§

impl BitAndAssign for KernelSigactionFlags

Source§

impl BitAndAssign for LocalModes

Source§

impl BitAndAssign for MapFlags

Source§

impl BitAndAssign for MembarrierQuery

Source§

impl BitAndAssign for MemfdFlags

Source§

impl BitAndAssign for MlockAllFlags

Source§

impl BitAndAssign for MlockFlags

Source§

impl BitAndAssign for Mode

Source§

impl BitAndAssign for MprotectFlags

Source§

impl BitAndAssign for MremapFlags

Source§

impl BitAndAssign for MsyncFlags

Source§

impl BitAndAssign for OFlags

Source§

impl BitAndAssign for OpenptFlags

Source§

impl BitAndAssign for OutputModes

Source§

impl BitAndAssign for PidfdFlags

Source§

impl BitAndAssign for PidfdGetfdFlags

Source§

impl BitAndAssign for PipeFlags

Source§

impl BitAndAssign for PollFlags

Source§

impl BitAndAssign for ProtFlags

Source§

impl BitAndAssign for ReadFlags

Source§

impl BitAndAssign for ReadWriteFlags

Source§

impl BitAndAssign for RealpathFlags

Source§

impl BitAndAssign for RecvFlags

Source§

impl BitAndAssign for RenameFlags

Source§

impl BitAndAssign for ResolveFlags

Source§

impl BitAndAssign for ReturnFlags

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<i8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<i16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<i32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<i64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<i128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<isize>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<u8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<u16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<u32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<u64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<u128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign for Saturating<usize>

Source§

impl BitAndAssign for SealFlags

Source§

impl BitAndAssign for SendFlags

Source§

impl BitAndAssign for ShmOFlags

Source§

impl BitAndAssign for SocketAddrXdpFlags

Source§

impl BitAndAssign for SocketFlags

Source§

impl BitAndAssign for SpeculationFeatureControl

Source§

impl BitAndAssign for SpeculationFeatureState

Source§

impl BitAndAssign for SpliceFlags

Source§

impl BitAndAssign for StatVfsMountFlags

Source§

impl BitAndAssign for StatxAttributes

Source§

impl BitAndAssign for StatxFlags

Source§

impl BitAndAssign for TaggedAddressMode

Source§

impl BitAndAssign for ThreadNameSpaceType

Source§

impl BitAndAssign for TimerfdFlags

Source§

impl BitAndAssign for TimerfdTimerFlags

Source§

impl BitAndAssign for TxTimeFlags

Source§

impl BitAndAssign for UnalignedAccessControl

Source§

impl BitAndAssign for UnshareFlags

Source§

impl BitAndAssign for UserfaultfdFlags

Source§

impl BitAndAssign for WaitFlags

Source§

impl BitAndAssign for WaitIdOptions

Source§

impl BitAndAssign for WaitOptions

Source§

impl BitAndAssign for WaitvFlags

Source§

impl BitAndAssign for WatchFlags

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<i8>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<i16>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<i32>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<i64>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<i128>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<isize>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<u8>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<u16>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<u32>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<u64>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<u128>

1.8.0 (const: unstable) · Source§

impl BitAndAssign for Wrapping<usize>

Source§

impl BitAndAssign for XattrFlags

Source§

impl BitAndAssign for XdpDescOptions

Source§

impl BitAndAssign for XdpOptionsFlags

Source§

impl BitAndAssign for XdpRingFlags

Source§

impl BitAndAssign for XdpUmemRegFlags

1.8.0 (const: unstable) · Source§

impl BitAndAssign for bool

1.8.0 (const: unstable) · Source§

impl BitAndAssign for i8

1.8.0 (const: unstable) · Source§

impl BitAndAssign for i16

1.8.0 (const: unstable) · Source§

impl BitAndAssign for i32

1.8.0 (const: unstable) · Source§

impl BitAndAssign for i64

1.8.0 (const: unstable) · Source§

impl BitAndAssign for i128

1.8.0 (const: unstable) · Source§

impl BitAndAssign for isize

1.8.0 (const: unstable) · Source§

impl BitAndAssign for u8

1.8.0 (const: unstable) · Source§

impl BitAndAssign for u16

1.8.0 (const: unstable) · Source§

impl BitAndAssign for u32

1.8.0 (const: unstable) · Source§

impl BitAndAssign for u64

1.8.0 (const: unstable) · Source§

impl BitAndAssign for u128

1.8.0 (const: unstable) · Source§

impl BitAndAssign for usize

1.75.0 (const: unstable) · Source§

impl BitAndAssign<&Ipv4Addr> for Ipv4Addr

1.75.0 (const: unstable) · Source§

impl BitAndAssign<&Ipv6Addr> for Ipv6Addr

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<i8>> for Saturating<i8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<i16>> for Saturating<i16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<i32>> for Saturating<i32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<i64>> for Saturating<i64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<i128>> for Saturating<i128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<isize>> for Saturating<isize>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<u8>> for Saturating<u8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<u16>> for Saturating<u16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<u32>> for Saturating<u32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<u64>> for Saturating<u64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<u128>> for Saturating<u128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&Saturating<usize>> for Saturating<usize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<i8>> for Wrapping<i8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<i16>> for Wrapping<i16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<i32>> for Wrapping<i32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<i64>> for Wrapping<i64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<i128>> for Wrapping<i128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<isize>> for Wrapping<isize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<u8>> for Wrapping<u8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<u16>> for Wrapping<u16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<u32>> for Wrapping<u32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<u64>> for Wrapping<u64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<u128>> for Wrapping<u128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&Wrapping<usize>> for Wrapping<usize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&bool> for bool

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&i8> for Saturating<i8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i8> for Wrapping<i8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i8> for i8

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&i16> for Saturating<i16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i16> for Wrapping<i16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i16> for i16

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&i32> for Saturating<i32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i32> for Wrapping<i32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i32> for i32

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&i64> for Saturating<i64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i64> for Wrapping<i64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i64> for i64

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&i128> for Saturating<i128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i128> for Wrapping<i128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&i128> for i128

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&isize> for Saturating<isize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&isize> for Wrapping<isize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&isize> for isize

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&u8> for Saturating<u8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u8> for Wrapping<u8>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u8> for u8

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&u16> for Saturating<u16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u16> for Wrapping<u16>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u16> for u16

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&u32> for Saturating<u32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u32> for Wrapping<u32>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u32> for u32

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&u64> for Saturating<u64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u64> for Wrapping<u64>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u64> for u64

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&u128> for Saturating<u128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u128> for Wrapping<u128>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&u128> for u128

1.74.0 (const: unstable) · Source§

impl BitAndAssign<&usize> for Saturating<usize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&usize> for Wrapping<usize>

1.22.0 (const: unstable) · Source§

impl BitAndAssign<&usize> for usize

1.74.0 (const: unstable) · Source§

impl BitAndAssign<i8> for Saturating<i8>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<i8> for Wrapping<i8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<i16> for Saturating<i16>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<i16> for Wrapping<i16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<i32> for Saturating<i32>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<i32> for Wrapping<i32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<i64> for Saturating<i64>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<i64> for Wrapping<i64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<i128> for Saturating<i128>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<i128> for Wrapping<i128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<isize> for Saturating<isize>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<isize> for Wrapping<isize>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<u8> for Saturating<u8>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<u8> for Wrapping<u8>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<u16> for Saturating<u16>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<u16> for Wrapping<u16>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<u32> for Saturating<u32>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<u32> for Wrapping<u32>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<u64> for Saturating<u64>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<u64> for Wrapping<u64>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<u128> for Saturating<u128>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<u128> for Wrapping<u128>

1.74.0 (const: unstable) · Source§

impl BitAndAssign<usize> for Saturating<usize>

1.60.0 (const: unstable) · Source§

impl BitAndAssign<usize> for Wrapping<usize>

Source§

impl<T, U, const N: usize> BitAndAssign<U> for Simd<T, N>
where Simd<T, N>: BitAnd<U, Output = Simd<T, N>>, T: SimdElement,

Source§

impl<T, const N: usize> BitAndAssign for Mask<T, N>
where T: MaskElement,

Source§

impl<T, const N: usize> BitAndAssign<bool> for Mask<T, N>
where T: MaskElement,