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.0Source

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

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 for Ipv4Addr

1.75.0 (const: unstable)Source

impl BitAndAssign for Ipv6Addr

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>

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 AttrCheckFlags

Source

impl BitAndAssign for CheckoutNotificationType

Source

impl BitAndAssign for CredentialType

Source

impl BitAndAssign for DiffFlags

Source

impl BitAndAssign for DiffStatsFormat

Source

impl BitAndAssign for IndexAddOption

Source

impl BitAndAssign for IndexEntryExtendedFlag

Source

impl BitAndAssign for IndexEntryFlag

Source

impl BitAndAssign for MergeAnalysis

Source

impl BitAndAssign for MergePreference

Source

impl BitAndAssign for OdbLookupFlags

Source

impl BitAndAssign for PathspecFlags

Source

impl BitAndAssign for ReferenceFormat

Source

impl BitAndAssign for RemoteUpdateFlags

Source

impl BitAndAssign for RepositoryInitMode

Source

impl BitAndAssign for RepositoryOpenFlags

Source

impl BitAndAssign for RevparseMode

Source

impl BitAndAssign for Sort

Source

impl BitAndAssign for StashApplyFlags

Source

impl BitAndAssign for StashFlags

Source

impl BitAndAssign for Status

Source

impl BitAndAssign for SubmoduleStatus

Source

impl BitAndAssign for CipherCtxFlags

Source

impl BitAndAssign for CMSOptions

Source

impl BitAndAssign for OcspFlag

Source

impl BitAndAssign for Pkcs7Flags

Source

impl BitAndAssign for ExtensionContext

Source

impl BitAndAssign for ShutdownState

Source

impl BitAndAssign for SslMode

Source

impl BitAndAssign for SslOptions

Source

impl BitAndAssign for SslSessionCacheMode

Source

impl BitAndAssign for SslVerifyMode

Source

impl BitAndAssign for X509CheckFlags

Source

impl BitAndAssign for X509VerifyFlags

Source

impl BitAndAssign for Choice

impl BitAndAssign for Access

impl BitAndAssign for AtFlags

impl BitAndAssign for ChannelType

impl BitAndAssign for ColorFallbackKind

impl BitAndAssign for ColorScheme

impl BitAndAssign for CreateFlags

impl BitAndAssign for CreateFlags

impl BitAndAssign for DupFlags

impl BitAndAssign for ElementSelectorFlags

impl BitAndAssign for EventFlags

impl BitAndAssign for EventfdFlags

impl BitAndAssign for FallocateFlags

impl BitAndAssign for FdFlags

impl BitAndAssign for Features

impl BitAndAssign for FloatingPointEmulationControl

impl BitAndAssign for FloatingPointExceptionMode

impl BitAndAssign for FmtSpan

impl BitAndAssign for GridAutoFlow

impl BitAndAssign for IFlags

impl BitAndAssign for MemfdFlags

impl BitAndAssign for Mode

impl BitAndAssign for OFlags

impl BitAndAssign for ParserFlags

impl BitAndAssign for PidfdFlags

impl BitAndAssign for PidfdGetfdFlags

impl BitAndAssign for PipeFlags

impl BitAndAssign for PollFlags

impl BitAndAssign for ReadFlags

impl BitAndAssign for ReadWriteFlags

impl BitAndAssign for RecvFlags

impl BitAndAssign for RenameFlags

impl BitAndAssign for ResolveFlags

impl BitAndAssign for ReturnFlags

impl BitAndAssign for SealFlags

impl BitAndAssign for SendFlags

impl BitAndAssign for SocketAddrXdpFlags

impl BitAndAssign for SocketFlags

impl BitAndAssign for SpeculationFeatureControl

impl BitAndAssign for SpeculationFeatureState

impl BitAndAssign for SpliceFlags

impl BitAndAssign for StatVfsMountFlags

impl BitAndAssign for StatxAttributes

impl BitAndAssign for StatxFlags

impl BitAndAssign for TextDecorationLine

impl BitAndAssign for TextTransformOther

impl BitAndAssign for TimerfdFlags

impl BitAndAssign for TimerfdTimerFlags

impl BitAndAssign for TxTimeFlags

impl BitAndAssign for UnalignedAccessControl

impl BitAndAssign for VendorPrefix

impl BitAndAssign for WaitIdOptions

impl BitAndAssign for WaitOptions

impl BitAndAssign for WatchFlags

impl BitAndAssign for XattrFlags

impl BitAndAssign for XdpDescOptions

impl BitAndAssign for XdpOptionsFlags

impl BitAndAssign for XdpRingFlags

impl BitAndAssign for XdpUmemRegFlags

1.22.0 (const: unstable)Source

impl BitAndAssign<&bool> for bool

1.22.0 (const: unstable)Source

impl BitAndAssign<&i8> for i8

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<&i16> for i16

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<&i32> for i32

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<&i64> for i64

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<&i128> for i128

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<&isize> for isize

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<&u8> for u8

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<&u16> for u16

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<&u32> for u32

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<&u64> for u64

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<&u128> for u128

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<&usize> for usize

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.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.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>

impl<O> BitAndAssign for I16<O>
where O: ByteOrder,

impl<O> BitAndAssign for I32<O>
where O: ByteOrder,

impl<O> BitAndAssign for I64<O>
where O: ByteOrder,

impl<O> BitAndAssign for I128<O>
where O: ByteOrder,

impl<O> BitAndAssign for Isize<O>
where O: ByteOrder,

impl<O> BitAndAssign for U16<O>
where O: ByteOrder,

impl<O> BitAndAssign for U32<O>
where O: ByteOrder,

impl<O> BitAndAssign for U64<O>
where O: ByteOrder,

impl<O> BitAndAssign for U128<O>
where O: ByteOrder,

impl<O> BitAndAssign for Usize<O>
where O: ByteOrder,

impl<O> BitAndAssign<i16> for I16<O>
where O: ByteOrder,

impl<O> BitAndAssign<i32> for I32<O>
where O: ByteOrder,

impl<O> BitAndAssign<i64> for I64<O>
where O: ByteOrder,

impl<O> BitAndAssign<i128> for I128<O>
where O: ByteOrder,

impl<O> BitAndAssign<isize> for Isize<O>
where O: ByteOrder,

impl<O> BitAndAssign<u16> for U16<O>
where O: ByteOrder,

impl<O> BitAndAssign<u32> for U32<O>
where O: ByteOrder,

impl<O> BitAndAssign<u64> for U64<O>
where O: ByteOrder,

impl<O> BitAndAssign<u128> for U128<O>
where O: ByteOrder,

impl<O> BitAndAssign<usize> for Usize<O>
where O: ByteOrder,

impl<O> BitAndAssign<I16<O>> for i16
where O: ByteOrder,

impl<O> BitAndAssign<I32<O>> for i32
where O: ByteOrder,

impl<O> BitAndAssign<I64<O>> for i64
where O: ByteOrder,

impl<O> BitAndAssign<I128<O>> for i128
where O: ByteOrder,

impl<O> BitAndAssign<Isize<O>> for isize
where O: ByteOrder,

impl<O> BitAndAssign<U16<O>> for u16
where O: ByteOrder,

impl<O> BitAndAssign<U32<O>> for u32
where O: ByteOrder,

impl<O> BitAndAssign<U64<O>> for u64
where O: ByteOrder,

impl<O> BitAndAssign<U128<O>> for u128
where O: ByteOrder,

impl<O> BitAndAssign<Usize<O>> for usize
where O: ByteOrder,

impl<T, S, A> BitAndAssign<&HashSet<T, S, A>> for HashSet<T, S, A>
where T: Eq + Hash + Clone, S: BuildHasher, A: Allocator,

impl<T, S, A> BitAndAssign<&HashSet<T, S, A>> for HashSet<T, S, A>
where T: Eq + Hash + Clone, S: BuildHasher, A: Allocator,

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, LaneCount<N>: SupportedLaneCount,

Source

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

Source

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