Trait sgx_tstd::ops::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§

source

type Output

The resulting type after applying the & operator.

Required Methods§

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§

source§

impl BitAnd for bool

§

type Output = bool

source§

impl BitAnd for i8

§

type Output = i8

source§

impl BitAnd for i16

§

type Output = i16

source§

impl BitAnd for i32

§

type Output = i32

source§

impl BitAnd for i64

§

type Output = i64

source§

impl BitAnd for i128

§

type Output = i128

source§

impl BitAnd for isize

source§

impl BitAnd for u8

§

type Output = u8

source§

impl BitAnd for u16

§

type Output = u16

source§

impl BitAnd for u32

§

type Output = u32

source§

impl BitAnd for u64

§

type Output = u64

source§

impl BitAnd for u128

§

type Output = u128

source§

impl BitAnd for usize

source§

impl BitAnd for MsgHdrFlags

source§

impl BitAnd for FutexFlags

source§

impl BitAnd for PageFlags

source§

impl BitAnd for AttributesFlags

source§

impl BitAnd for KeyPolicy

source§

impl BitAnd for MiscSelect

1.75.0 · source§

impl BitAnd for Ipv4Addr

1.75.0 · source§

impl BitAnd for Ipv6Addr

source§

impl BitAnd for Wrapping<i8>

source§

impl BitAnd for Wrapping<i16>

source§

impl BitAnd for Wrapping<i32>

source§

impl BitAnd for Wrapping<i64>

source§

impl BitAnd for Wrapping<i128>

source§

impl BitAnd for Wrapping<isize>

source§

impl BitAnd for Wrapping<u8>

source§

impl BitAnd for Wrapping<u16>

source§

impl BitAnd for Wrapping<u32>

source§

impl BitAnd for Wrapping<u64>

source§

impl BitAnd for Wrapping<u128>

source§

impl BitAnd for Wrapping<usize>

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>

source§

impl BitAnd<&bool> for &bool

§

type Output = <bool as BitAnd>::Output

source§

impl BitAnd<&bool> for bool

§

type Output = <bool as BitAnd>::Output

source§

impl BitAnd<&i8> for &i8

§

type Output = <i8 as BitAnd>::Output

source§

impl BitAnd<&i8> for i8

§

type Output = <i8 as BitAnd>::Output

source§

impl BitAnd<&i16> for &i16

§

type Output = <i16 as BitAnd>::Output

source§

impl BitAnd<&i16> for i16

§

type Output = <i16 as BitAnd>::Output

source§

impl BitAnd<&i32> for &i32

§

type Output = <i32 as BitAnd>::Output

source§

impl BitAnd<&i32> for i32

§

type Output = <i32 as BitAnd>::Output

source§

impl BitAnd<&i64> for &i64

§

type Output = <i64 as BitAnd>::Output

source§

impl BitAnd<&i64> for i64

§

type Output = <i64 as BitAnd>::Output

source§

impl BitAnd<&i128> for &i128

§

type Output = <i128 as BitAnd>::Output

source§

impl BitAnd<&i128> for i128

§

type Output = <i128 as BitAnd>::Output

source§

impl BitAnd<&isize> for &isize

source§

impl BitAnd<&isize> for isize

source§

impl BitAnd<&u8> for &u8

§

type Output = <u8 as BitAnd>::Output

source§

impl BitAnd<&u8> for u8

§

type Output = <u8 as BitAnd>::Output

source§

impl BitAnd<&u16> for &u16

§

type Output = <u16 as BitAnd>::Output

source§

impl BitAnd<&u16> for u16

§

type Output = <u16 as BitAnd>::Output

source§

impl BitAnd<&u32> for &u32

§

type Output = <u32 as BitAnd>::Output

source§

impl BitAnd<&u32> for u32

§

type Output = <u32 as BitAnd>::Output

source§

impl BitAnd<&u64> for &u64

§

type Output = <u64 as BitAnd>::Output

source§

impl BitAnd<&u64> for u64

§

type Output = <u64 as BitAnd>::Output

source§

impl BitAnd<&u128> for &u128

§

type Output = <u128 as BitAnd>::Output

source§

impl BitAnd<&u128> for u128

§

type Output = <u128 as BitAnd>::Output

source§

impl BitAnd<&usize> for &usize

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.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.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.75.0 · source§

impl BitAnd<Ipv4Addr> for &Ipv4Addr

1.75.0 · source§

impl BitAnd<Ipv6Addr> for &Ipv6Addr

source§

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

§

type Output = <bool as BitAnd>::Output

source§

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

§

type Output = <i8 as BitAnd>::Output

source§

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

§

type Output = <i16 as BitAnd>::Output

source§

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

§

type Output = <i32 as BitAnd>::Output

source§

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

§

type Output = <i64 as BitAnd>::Output

source§

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

§

type Output = <i128 as BitAnd>::Output

source§

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

source§

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

§

type Output = <u8 as BitAnd>::Output

source§

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

§

type Output = <u16 as BitAnd>::Output

source§

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

§

type Output = <u32 as BitAnd>::Output

source§

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

§

type Output = <u64 as BitAnd>::Output

source§

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

§

type Output = <u128 as BitAnd>::Output

source§

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

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>

source§

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

§

type Output = Simd<T, LANES>

source§

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

§

type Output = BTreeSet<T, A>

source§

impl<T, S> BitAnd<&HashSet<T, S>> for &sgx_tstd::collections::hash_set::HashSet<T, S>where T: Eq + Hash + Clone, S: BuildHasher + Default,

§

type Output = HashSet<T, S>

source§

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

§

type Output = HashSet<T, S>

source§

impl<T, const LANES: usize> BitAnd for Mask<T, LANES>where T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

§

type Output = Mask<T, LANES>

source§

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

§

type Output = Simd<T, LANES>

source§

impl<T, const LANES: usize> BitAnd<bool> for Mask<T, LANES>where T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

§

type Output = Mask<T, LANES>

source§

impl<T, const LANES: usize> BitAnd<Mask<T, LANES>> for boolwhere T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

§

type Output = Mask<T, LANES>

source§

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

§

type Output = Simd<T, LANES>

source§

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

§

type Output = Simd<i8, N>

source§

impl<const N: usize> BitAnd for Simd<i16, N>where i16: SimdElement, LaneCount<N>: SupportedLaneCount,

§

type Output = Simd<i16, N>

source§

impl<const N: usize> BitAnd for Simd<i32, N>where i32: SimdElement, LaneCount<N>: SupportedLaneCount,

§

type Output = Simd<i32, N>

source§

impl<const N: usize> BitAnd for Simd<i64, N>where i64: SimdElement, LaneCount<N>: SupportedLaneCount,

§

type Output = Simd<i64, N>

source§

impl<const N: usize> BitAnd for Simd<isize, N>where isize: SimdElement, LaneCount<N>: SupportedLaneCount,

§

type Output = Simd<isize, N>

source§

impl<const N: usize> BitAnd for Simd<u8, N>where u8: SimdElement, LaneCount<N>: SupportedLaneCount,

§

type Output = Simd<u8, N>

source§

impl<const N: usize> BitAnd for Simd<u16, N>where u16: SimdElement, LaneCount<N>: SupportedLaneCount,

§

type Output = Simd<u16, N>

source§

impl<const N: usize> BitAnd for Simd<u32, N>where u32: SimdElement, LaneCount<N>: SupportedLaneCount,

§

type Output = Simd<u32, N>

source§

impl<const N: usize> BitAnd for Simd<u64, N>where u64: SimdElement, LaneCount<N>: SupportedLaneCount,

§

type Output = Simd<u64, N>

source§

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

§

type Output = Simd<usize, N>