Skip to main content

BitAnd

Trait BitAnd 

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

type Output

The resulting type after applying the & operator.

Required Methods§

1.0.0 (const: unstable) · 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);

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§

Source§

impl BitAnd for BigInt

Source§

impl BitAnd for BigUint

1.75.0 (const: unstable) · Source§

impl BitAnd for Ipv4Addr

1.75.0 (const: unstable) · Source§

impl BitAnd for Ipv6Addr

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<i8>

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<i16>

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<i32>

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<i64>

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<i128>

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<isize>

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<u8>

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<u16>

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<u32>

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<u64>

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<u128>

1.74.0 (const: unstable) · Source§

impl BitAnd for Saturating<usize>

Source§

impl BitAnd for Style

Source§

impl BitAnd for Styles

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<i8>

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<i16>

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<i32>

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<i64>

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<i128>

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<isize>

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<u8>

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<u16>

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<u32>

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<u64>

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<u128>

1.0.0 (const: unstable) · Source§

impl BitAnd for Wrapping<usize>

1.0.0 (const: unstable) · Source§

impl BitAnd for bool

1.0.0 (const: unstable) · Source§

impl BitAnd for i8

1.0.0 (const: unstable) · Source§

impl BitAnd for i16

1.0.0 (const: unstable) · Source§

impl BitAnd for i32

1.0.0 (const: unstable) · Source§

impl BitAnd for i64

1.0.0 (const: unstable) · Source§

impl BitAnd for i128

1.0.0 (const: unstable) · Source§

impl BitAnd for isize

1.0.0 (const: unstable) · Source§

impl BitAnd for u8

1.0.0 (const: unstable) · Source§

impl BitAnd for u16

1.0.0 (const: unstable) · Source§

impl BitAnd for u32

1.0.0 (const: unstable) · Source§

impl BitAnd for u64

1.0.0 (const: unstable) · Source§

impl BitAnd for u128

1.0.0 (const: unstable) · Source§

impl BitAnd for usize

Source§

impl BitAnd<&BigInt> for &BigInt

Source§

impl BitAnd<&BigInt> for BigInt

Source§

impl BitAnd<&BigUint> for &BigUint

Source§

impl BitAnd<&BigUint> for BigUint

1.75.0 (const: unstable) · Source§

impl BitAnd<&Ipv4Addr> for &Ipv4Addr

1.75.0 (const: unstable) · Source§

impl BitAnd<&Ipv4Addr> for Ipv4Addr

1.75.0 (const: unstable) · Source§

impl BitAnd<&Ipv6Addr> for &Ipv6Addr

1.75.0 (const: unstable) · Source§

impl BitAnd<&Ipv6Addr> for Ipv6Addr

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

Source§

impl BitAnd<&Style> for &Style

Source§

impl BitAnd<&Style> for &Styles

Source§

impl BitAnd<&Style> for Style

Source§

impl BitAnd<&Style> for Styles

Source§

impl BitAnd<&Styles> for &Style

Source§

impl BitAnd<&Styles> for &Styles

Source§

impl BitAnd<&Styles> for Style

Source§

impl BitAnd<&Styles> for Styles

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.0.0 (const: unstable) · Source§

impl BitAnd<&bool> for &bool

1.0.0 (const: unstable) · Source§

impl BitAnd<&bool> for bool

1.0.0 (const: unstable) · Source§

impl BitAnd<&i8> for &i8

1.0.0 (const: unstable) · Source§

impl BitAnd<&i8> for i8

1.0.0 (const: unstable) · Source§

impl BitAnd<&i16> for &i16

1.0.0 (const: unstable) · Source§

impl BitAnd<&i16> for i16

1.0.0 (const: unstable) · Source§

impl BitAnd<&i32> for &i32

1.0.0 (const: unstable) · Source§

impl BitAnd<&i32> for i32

1.0.0 (const: unstable) · Source§

impl BitAnd<&i64> for &i64

1.0.0 (const: unstable) · Source§

impl BitAnd<&i64> for i64

1.0.0 (const: unstable) · Source§

impl BitAnd<&i128> for &i128

1.0.0 (const: unstable) · Source§

impl BitAnd<&i128> for i128

1.0.0 (const: unstable) · Source§

impl BitAnd<&isize> for &isize

1.0.0 (const: unstable) · Source§

impl BitAnd<&isize> for isize

1.0.0 (const: unstable) · Source§

impl BitAnd<&u8> for &u8

1.0.0 (const: unstable) · Source§

impl BitAnd<&u8> for u8

1.0.0 (const: unstable) · Source§

impl BitAnd<&u16> for &u16

1.0.0 (const: unstable) · Source§

impl BitAnd<&u16> for u16

1.0.0 (const: unstable) · Source§

impl BitAnd<&u32> for &u32

1.0.0 (const: unstable) · Source§

impl BitAnd<&u32> for u32

1.0.0 (const: unstable) · Source§

impl BitAnd<&u64> for &u64

1.0.0 (const: unstable) · Source§

impl BitAnd<&u64> for u64

1.0.0 (const: unstable) · Source§

impl BitAnd<&u128> for &u128

1.0.0 (const: unstable) · Source§

impl BitAnd<&u128> for u128

1.0.0 (const: unstable) · Source§

impl BitAnd<&usize> for &usize

1.0.0 (const: unstable) · Source§

impl BitAnd<&usize> for usize

Source§

impl BitAnd<BigInt> for &BigInt

Source§

impl BitAnd<BigUint> for &BigUint

1.75.0 (const: unstable) · Source§

impl BitAnd<Ipv4Addr> for &Ipv4Addr

1.75.0 (const: unstable) · Source§

impl BitAnd<Ipv6Addr> for &Ipv6Addr

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

Source§

impl BitAnd<Style> for &Style

Source§

impl BitAnd<Style> for &Styles

Source§

impl BitAnd<Style> for Styles

Source§

impl BitAnd<Styles> for &Style

Source§

impl BitAnd<Styles> for &Styles

Source§

impl BitAnd<Styles> for Style

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.0.0 (const: unstable) · Source§

impl BitAnd<bool> for &bool

1.0.0 (const: unstable) · Source§

impl BitAnd<i8> for &i8

1.0.0 (const: unstable) · Source§

impl BitAnd<i16> for &i16

1.0.0 (const: unstable) · Source§

impl BitAnd<i32> for &i32

1.0.0 (const: unstable) · Source§

impl BitAnd<i64> for &i64

1.0.0 (const: unstable) · Source§

impl BitAnd<i128> for &i128

1.0.0 (const: unstable) · Source§

impl BitAnd<isize> for &isize

1.0.0 (const: unstable) · Source§

impl BitAnd<u8> for &u8

1.0.0 (const: unstable) · Source§

impl BitAnd<u16> for &u16

1.0.0 (const: unstable) · Source§

impl BitAnd<u32> for &u32

1.0.0 (const: unstable) · Source§

impl BitAnd<u64> for &u64

1.0.0 (const: unstable) · Source§

impl BitAnd<u128> for &u128

1.0.0 (const: unstable) · Source§

impl BitAnd<usize> for &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>>,

Source§

type Output = Simd<T, N>

Source§

impl<E: Environment> BitAnd for Boolean<E>

Source§

impl<E: Environment> BitAnd<&Boolean<E>> for Boolean<E>

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, S1, S2> BitAnd<&IndexSet<T, S2>> for &IndexSet<T, S1>
where T: Eq + Hash + Clone, S1: BuildHasher + Default, S2: BuildHasher,

Source§

type Output = IndexSet<T, S1>

Source§

impl<T, S, A> BitAnd<&HashSet<T, S, A>> for &hashbrown::set::HashSet<T, S, A>
where T: Eq + Hash + Clone, S: BuildHasher + Default, A: Allocator + Default,

Source§

type Output = HashSet<T, S, A>

1.0.0 · Source§

impl<T, S> BitAnd<&HashSet<T, S>> for &std::collections::hash::set::HashSet<T, S>
where T: Eq + Hash + Clone, S: BuildHasher + Default,

Source§

type Output = HashSet<T, S>

Source§

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

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

Source§

type Output = Simd<T, N>

Source§

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

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

Source§

type Output = Simd<T, N>

Source§

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

Source§

type Output = Mask<T, N>

Source§

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

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>
where u8: SimdElement,

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>