Trait BitAnd

1.0.0 · Source
pub trait BitAnd<Rhs = Self> {
    type Output;

    // Required method
    fn bitand(self, rhs: Rhs) -> Self::Output;
}
Expand description

The bitwise AND operator &.

Note that Rhs is Self by default, but this is not mandatory.

§Examples

An implementation of BitAnd for a wrapper around bool.

use std::ops::BitAnd;

#[derive(Debug, PartialEq)]
struct Scalar(bool);

impl BitAnd for Scalar {
    type Output = Self;

    // rhs is the "right-hand side" of the expression `a & b`
    fn bitand(self, rhs: Self) -> Self::Output {
        Self(self.0 & rhs.0)
    }
}

assert_eq!(Scalar(true) & Scalar(true), Scalar(true));
assert_eq!(Scalar(true) & Scalar(false), Scalar(false));
assert_eq!(Scalar(false) & Scalar(true), Scalar(false));
assert_eq!(Scalar(false) & Scalar(false), Scalar(false));

An implementation of BitAnd for a wrapper around Vec<bool>.

use std::ops::BitAnd;

#[derive(Debug, PartialEq)]
struct BooleanVector(Vec<bool>);

impl BitAnd for BooleanVector {
    type Output = Self;

    fn bitand(self, Self(rhs): Self) -> Self::Output {
        let Self(lhs) = self;
        assert_eq!(lhs.len(), rhs.len());
        Self(
            lhs.iter()
                .zip(rhs.iter())
                .map(|(x, y)| *x & *y)
                .collect()
        )
    }
}

let bv1 = BooleanVector(vec![true, true, false, false]);
let bv2 = BooleanVector(vec![true, false, true, false]);
let expected = BooleanVector(vec![true, false, false, false]);
assert_eq!(bv1 & bv2, expected);

Required Associated Types§

1.0.0 · Source

type Output

The resulting type after applying the & operator.

Required Methods§

1.0.0 · Source

fn bitand(self, rhs: Rhs) -> Self::Output

Performs the & operation.

§Examples
assert_eq!(true & false, false);
assert_eq!(true & true, true);
assert_eq!(5u8 & 1u8, 1);
assert_eq!(5u8 & 2u8, 0);

Implementors§

1.0.0 · Source§

impl BitAnd for bool

1.0.0 · Source§

impl BitAnd for i8

1.0.0 · Source§

impl BitAnd for i16

1.0.0 · Source§

impl BitAnd for i32

1.0.0 · Source§

impl BitAnd for i64

1.0.0 · Source§

impl BitAnd for i128

1.0.0 · Source§

impl BitAnd for isize

1.0.0 · Source§

impl BitAnd for u8

1.0.0 · Source§

impl BitAnd for u16

1.0.0 · Source§

impl BitAnd for u32

1.0.0 · Source§

impl BitAnd for u64

1.0.0 · Source§

impl BitAnd for u128

1.0.0 · Source§

impl BitAnd for usize

1.75.0 · Source§

impl BitAnd for Ipv4Addr

1.75.0 · Source§

impl BitAnd for Ipv6Addr

1.74.0 · Source§

impl BitAnd for Saturating<i8>

1.74.0 · Source§

impl BitAnd for Saturating<i16>

1.74.0 · Source§

impl BitAnd for Saturating<i32>

1.74.0 · Source§

impl BitAnd for Saturating<i64>

1.74.0 · Source§

impl BitAnd for Saturating<i128>

1.74.0 · Source§

impl BitAnd for Saturating<isize>

1.74.0 · Source§

impl BitAnd for Saturating<u8>

1.74.0 · Source§

impl BitAnd for Saturating<u16>

1.74.0 · Source§

impl BitAnd for Saturating<u32>

1.74.0 · Source§

impl BitAnd for Saturating<u64>

1.74.0 · Source§

impl BitAnd for Saturating<u128>

1.74.0 · Source§

impl BitAnd for Saturating<usize>

1.0.0 · Source§

impl BitAnd for Wrapping<i8>

1.0.0 · Source§

impl BitAnd for Wrapping<i16>

1.0.0 · Source§

impl BitAnd for Wrapping<i32>

1.0.0 · Source§

impl BitAnd for Wrapping<i64>

1.0.0 · Source§

impl BitAnd for Wrapping<i128>

1.0.0 · Source§

impl BitAnd for Wrapping<isize>

1.0.0 · Source§

impl BitAnd for Wrapping<u8>

1.0.0 · Source§

impl BitAnd for Wrapping<u16>

1.0.0 · Source§

impl BitAnd for Wrapping<u32>

1.0.0 · Source§

impl BitAnd for Wrapping<u64>

1.0.0 · Source§

impl BitAnd for Wrapping<u128>

1.0.0 · Source§

impl BitAnd for Wrapping<usize>

Source§

impl BitAnd for CreateFlags

Source§

impl BitAnd for ReadFlags

Source§

impl BitAnd for WatchFlags

Source§

impl BitAnd for Access

Source§

impl BitAnd for AtFlags

Source§

impl BitAnd for FallocateFlags

Source§

impl BitAnd for MemfdFlags

Source§

impl BitAnd for Mode

Source§

impl BitAnd for OFlags

Source§

impl BitAnd for RenameFlags

Source§

impl BitAnd for ResolveFlags

Source§

impl BitAnd for SealFlags

Source§

impl BitAnd for StatVfsMountFlags

Source§

impl BitAnd for DupFlags

Source§

impl BitAnd for FdFlags

Source§

impl BitAnd for ReadWriteFlags

Source§

impl BitAnd for MapFlags

Source§

impl BitAnd for MlockAllFlags

Source§

impl BitAnd for MlockFlags

Source§

impl BitAnd for MprotectFlags

Source§

impl BitAnd for MremapFlags

Source§

impl BitAnd for MsyncFlags

Source§

impl BitAnd for ProtFlags

Source§

impl BitAnd for UserfaultfdFlags

Source§

impl BitAnd for Flags

Source§

impl BitAnd for WaitFlags

Source§

impl BitAnd for TimerfdFlags

Source§

impl BitAnd for TimerfdTimerFlags

Source§

impl BitAnd for IFlags

Source§

impl BitAnd for StatxAttributes

Source§

impl BitAnd for StatxFlags

Source§

impl BitAnd for XattrFlags

Source§

impl BitAnd for PidfdFlags

Source§

impl BitAnd for PidfdGetfdFlags

Source§

impl BitAnd for FloatingPointEmulationControl

Source§

impl BitAnd for FloatingPointExceptionMode

Source§

impl BitAnd for SpeculationFeatureControl

Source§

impl BitAnd for SpeculationFeatureState

Source§

impl BitAnd for UnalignedAccessControl

Source§

impl BitAnd for WaitIdOptions

Source§

impl BitAnd for WaitOptions

Source§

impl BitAnd for KernelSigactionFlags

Source§

impl BitAnd for WaitvFlags

Source§

impl BitAnd for CapabilityFlags

Source§

impl BitAnd for MembarrierQuery

Source§

impl BitAnd for CapabilitiesSecureBits

Source§

impl BitAnd for TaggedAddressMode

Source§

impl BitAnd for ThreadNameSpaceType

Source§

impl BitAnd for UnshareFlags

1.0.0 · Source§

impl BitAnd<&bool> for &bool

1.0.0 · Source§

impl BitAnd<&bool> for bool

1.0.0 · Source§

impl BitAnd<&i8> for &i8

1.0.0 · Source§

impl BitAnd<&i8> for i8

1.0.0 · Source§

impl BitAnd<&i16> for &i16

1.0.0 · Source§

impl BitAnd<&i16> for i16

1.0.0 · Source§

impl BitAnd<&i32> for &i32

1.0.0 · Source§

impl BitAnd<&i32> for i32

1.0.0 · Source§

impl BitAnd<&i64> for &i64

1.0.0 · Source§

impl BitAnd<&i64> for i64

1.0.0 · Source§

impl BitAnd<&i128> for &i128

1.0.0 · Source§

impl BitAnd<&i128> for i128

1.0.0 · Source§

impl BitAnd<&isize> for &isize

1.0.0 · Source§

impl BitAnd<&isize> for isize

1.0.0 · Source§

impl BitAnd<&u8> for &u8

1.0.0 · Source§

impl BitAnd<&u8> for u8

1.0.0 · Source§

impl BitAnd<&u16> for &u16

1.0.0 · Source§

impl BitAnd<&u16> for u16

1.0.0 · Source§

impl BitAnd<&u32> for &u32

1.0.0 · Source§

impl BitAnd<&u32> for u32

1.0.0 · Source§

impl BitAnd<&u64> for &u64

1.0.0 · Source§

impl BitAnd<&u64> for u64

1.0.0 · Source§

impl BitAnd<&u128> for &u128

1.0.0 · Source§

impl BitAnd<&u128> for u128

1.0.0 · Source§

impl BitAnd<&usize> for &usize

1.0.0 · Source§

impl BitAnd<&usize> for usize

1.75.0 · Source§

impl BitAnd<&Ipv4Addr> for &Ipv4Addr

1.75.0 · Source§

impl BitAnd<&Ipv4Addr> for Ipv4Addr

1.75.0 · Source§

impl BitAnd<&Ipv6Addr> for &Ipv6Addr

1.75.0 · Source§

impl BitAnd<&Ipv6Addr> for Ipv6Addr

1.74.0 · Source§

impl BitAnd<&Saturating<i8>> for &Saturating<i8>

1.74.0 · Source§

impl BitAnd<&Saturating<i8>> for Saturating<i8>

1.74.0 · Source§

impl BitAnd<&Saturating<i16>> for &Saturating<i16>

1.74.0 · Source§

impl BitAnd<&Saturating<i16>> for Saturating<i16>

1.74.0 · Source§

impl BitAnd<&Saturating<i32>> for &Saturating<i32>

1.74.0 · Source§

impl BitAnd<&Saturating<i32>> for Saturating<i32>

1.74.0 · Source§

impl BitAnd<&Saturating<i64>> for &Saturating<i64>

1.74.0 · Source§

impl BitAnd<&Saturating<i64>> for Saturating<i64>

1.74.0 · Source§

impl BitAnd<&Saturating<i128>> for &Saturating<i128>

1.74.0 · Source§

impl BitAnd<&Saturating<i128>> for Saturating<i128>

1.74.0 · Source§

impl BitAnd<&Saturating<isize>> for &Saturating<isize>

1.74.0 · Source§

impl BitAnd<&Saturating<isize>> for Saturating<isize>

1.74.0 · Source§

impl BitAnd<&Saturating<u8>> for &Saturating<u8>

1.74.0 · Source§

impl BitAnd<&Saturating<u8>> for Saturating<u8>

1.74.0 · Source§

impl BitAnd<&Saturating<u16>> for &Saturating<u16>

1.74.0 · Source§

impl BitAnd<&Saturating<u16>> for Saturating<u16>

1.74.0 · Source§

impl BitAnd<&Saturating<u32>> for &Saturating<u32>

1.74.0 · Source§

impl BitAnd<&Saturating<u32>> for Saturating<u32>

1.74.0 · Source§

impl BitAnd<&Saturating<u64>> for &Saturating<u64>

1.74.0 · Source§

impl BitAnd<&Saturating<u64>> for Saturating<u64>

1.74.0 · Source§

impl BitAnd<&Saturating<u128>> for &Saturating<u128>

1.74.0 · Source§

impl BitAnd<&Saturating<u128>> for Saturating<u128>

1.74.0 · Source§

impl BitAnd<&Saturating<usize>> for &Saturating<usize>

1.74.0 · Source§

impl BitAnd<&Saturating<usize>> for Saturating<usize>

1.14.0 · Source§

impl BitAnd<&Wrapping<i8>> for &Wrapping<i8>

1.14.0 · Source§

impl BitAnd<&Wrapping<i8>> for Wrapping<i8>

1.14.0 · Source§

impl BitAnd<&Wrapping<i16>> for &Wrapping<i16>

1.14.0 · Source§

impl BitAnd<&Wrapping<i16>> for Wrapping<i16>

1.14.0 · Source§

impl BitAnd<&Wrapping<i32>> for &Wrapping<i32>

1.14.0 · Source§

impl BitAnd<&Wrapping<i32>> for Wrapping<i32>

1.14.0 · Source§

impl BitAnd<&Wrapping<i64>> for &Wrapping<i64>

1.14.0 · Source§

impl BitAnd<&Wrapping<i64>> for Wrapping<i64>

1.14.0 · Source§

impl BitAnd<&Wrapping<i128>> for &Wrapping<i128>

1.14.0 · Source§

impl BitAnd<&Wrapping<i128>> for Wrapping<i128>

1.14.0 · Source§

impl BitAnd<&Wrapping<isize>> for &Wrapping<isize>

1.14.0 · Source§

impl BitAnd<&Wrapping<isize>> for Wrapping<isize>

1.14.0 · Source§

impl BitAnd<&Wrapping<u8>> for &Wrapping<u8>

1.14.0 · Source§

impl BitAnd<&Wrapping<u8>> for Wrapping<u8>

1.14.0 · Source§

impl BitAnd<&Wrapping<u16>> for &Wrapping<u16>

1.14.0 · Source§

impl BitAnd<&Wrapping<u16>> for Wrapping<u16>

1.14.0 · Source§

impl BitAnd<&Wrapping<u32>> for &Wrapping<u32>

1.14.0 · Source§

impl BitAnd<&Wrapping<u32>> for Wrapping<u32>

1.14.0 · Source§

impl BitAnd<&Wrapping<u64>> for &Wrapping<u64>

1.14.0 · Source§

impl BitAnd<&Wrapping<u64>> for Wrapping<u64>

1.14.0 · Source§

impl BitAnd<&Wrapping<u128>> for &Wrapping<u128>

1.14.0 · Source§

impl BitAnd<&Wrapping<u128>> for Wrapping<u128>

1.14.0 · Source§

impl BitAnd<&Wrapping<usize>> for &Wrapping<usize>

1.14.0 · Source§

impl BitAnd<&Wrapping<usize>> for Wrapping<usize>

1.75.0 · Source§

impl BitAnd<Ipv4Addr> for &Ipv4Addr

1.75.0 · Source§

impl BitAnd<Ipv6Addr> for &Ipv6Addr

1.0.0 · Source§

impl<'a> BitAnd<bool> for &'a bool

1.0.0 · Source§

impl<'a> BitAnd<i8> for &'a i8

1.0.0 · Source§

impl<'a> BitAnd<i16> for &'a i16

1.0.0 · Source§

impl<'a> BitAnd<i32> for &'a i32

1.0.0 · Source§

impl<'a> BitAnd<i64> for &'a i64

1.0.0 · Source§

impl<'a> BitAnd<i128> for &'a i128

1.0.0 · Source§

impl<'a> BitAnd<isize> for &'a isize

1.0.0 · Source§

impl<'a> BitAnd<u8> for &'a u8

1.0.0 · Source§

impl<'a> BitAnd<u16> for &'a u16

1.0.0 · Source§

impl<'a> BitAnd<u32> for &'a u32

1.0.0 · Source§

impl<'a> BitAnd<u64> for &'a u64

1.0.0 · Source§

impl<'a> BitAnd<u128> for &'a u128

1.0.0 · Source§

impl<'a> BitAnd<usize> for &'a usize

1.74.0 · Source§

impl<'a> BitAnd<Saturating<i8>> for &'a Saturating<i8>

1.74.0 · Source§

impl<'a> BitAnd<Saturating<i16>> for &'a Saturating<i16>

1.74.0 · Source§

impl<'a> BitAnd<Saturating<i32>> for &'a Saturating<i32>

1.74.0 · Source§

impl<'a> BitAnd<Saturating<i64>> for &'a Saturating<i64>

1.74.0 · Source§

impl<'a> BitAnd<Saturating<i128>> for &'a Saturating<i128>

1.74.0 · Source§

impl<'a> BitAnd<Saturating<isize>> for &'a Saturating<isize>

1.74.0 · Source§

impl<'a> BitAnd<Saturating<u8>> for &'a Saturating<u8>

1.74.0 · Source§

impl<'a> BitAnd<Saturating<u16>> for &'a Saturating<u16>

1.74.0 · Source§

impl<'a> BitAnd<Saturating<u32>> for &'a Saturating<u32>

1.74.0 · Source§

impl<'a> BitAnd<Saturating<u64>> for &'a Saturating<u64>

1.74.0 · Source§

impl<'a> BitAnd<Saturating<u128>> for &'a Saturating<u128>

1.74.0 · Source§

impl<'a> BitAnd<Saturating<usize>> for &'a Saturating<usize>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<i8>> for &'a Wrapping<i8>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<i16>> for &'a Wrapping<i16>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<i32>> for &'a Wrapping<i32>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<i64>> for &'a Wrapping<i64>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<i128>> for &'a Wrapping<i128>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<isize>> for &'a Wrapping<isize>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<u8>> for &'a Wrapping<u8>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<u16>> for &'a Wrapping<u16>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<u32>> for &'a Wrapping<u32>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<u64>> for &'a Wrapping<u64>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<u128>> for &'a Wrapping<u128>

1.14.0 · Source§

impl<'a> BitAnd<Wrapping<usize>> for &'a Wrapping<usize>

Source§

impl<'lhs, 'rhs, T, const N: usize> BitAnd<&'rhs Simd<T, N>> for &'lhs Simd<T, N>
where T: SimdElement, Simd<T, N>: BitAnd<Output = Simd<T, N>>, LaneCount<N>: SupportedLaneCount,

Source§

type Output = Simd<T, N>

1.0.0 · Source§

impl<T, A> BitAnd<&BTreeSet<T, A>> for &BTreeSet<T, A>
where T: Ord + Clone, A: Allocator + Clone,

Source§

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

Source§

type Output = Mask<T, N>

Source§

impl<T, const N: usize> BitAnd<&Simd<T, N>> for Simd<T, N>
where T: SimdElement, Simd<T, N>: BitAnd<Output = Simd<T, N>>, LaneCount<N>: SupportedLaneCount,

Source§

type Output = Simd<T, N>

Source§

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

Source§

type Output = Mask<T, N>

Source§

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

Source§

type Output = Mask<T, N>

Source§

impl<T, const N: usize> BitAnd<Simd<T, N>> for &Simd<T, N>
where T: SimdElement, Simd<T, N>: BitAnd<Output = Simd<T, N>>, LaneCount<N>: SupportedLaneCount,

Source§

type Output = Simd<T, N>

Source§

impl<const N: usize> BitAnd for Simd<i8, N>

Source§

impl<const N: usize> BitAnd for Simd<i16, N>

Source§

impl<const N: usize> BitAnd for Simd<i32, N>

Source§

impl<const N: usize> BitAnd for Simd<i64, N>

Source§

impl<const N: usize> BitAnd for Simd<isize, N>

Source§

impl<const N: usize> BitAnd for Simd<u8, N>

Source§

impl<const N: usize> BitAnd for Simd<u16, N>

Source§

impl<const N: usize> BitAnd for Simd<u32, N>

Source§

impl<const N: usize> BitAnd for Simd<u64, N>

Source§

impl<const N: usize> BitAnd for Simd<usize, N>