Trait sgx_tstd::ops::BitXor

1.0.0 · source ·
pub trait BitXor<Rhs = Self> {
    type Output;

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

The bitwise XOR operator ^.

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

Examples

An implementation of BitXor that lifts ^ to a wrapper around bool.

use std::ops::BitXor;

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

impl BitXor for Scalar {
    type Output = Self;

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

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

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

use std::ops::BitXor;

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

impl BitXor for BooleanVector {
    type Output = Self;

    fn bitxor(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![false, true, true, false]);
assert_eq!(bv1 ^ bv2, expected);

Required Associated Types§

source

type Output

The resulting type after applying the ^ operator.

Required Methods§

source

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

Performs the ^ operation.

Examples
assert_eq!(true ^ false, true);
assert_eq!(true ^ true, false);
assert_eq!(5u8 ^ 1u8, 4);
assert_eq!(5u8 ^ 2u8, 7);

Implementors§

source§

impl BitXor for bool

§

type Output = bool

source§

impl BitXor for i8

§

type Output = i8

source§

impl BitXor for i16

§

type Output = i16

source§

impl BitXor for i32

§

type Output = i32

source§

impl BitXor for i64

§

type Output = i64

source§

impl BitXor for i128

§

type Output = i128

source§

impl BitXor for isize

source§

impl BitXor for u8

§

type Output = u8

source§

impl BitXor for u16

§

type Output = u16

source§

impl BitXor for u32

§

type Output = u32

source§

impl BitXor for u64

§

type Output = u64

source§

impl BitXor for u128

§

type Output = u128

source§

impl BitXor for usize

source§

impl BitXor for MsgHdrFlags

source§

impl BitXor for FutexFlags

source§

impl BitXor for PageFlags

source§

impl BitXor for AttributesFlags

source§

impl BitXor for KeyPolicy

source§

impl BitXor for MiscSelect

source§

impl BitXor for Wrapping<i8>

source§

impl BitXor for Wrapping<i16>

source§

impl BitXor for Wrapping<i32>

source§

impl BitXor for Wrapping<i64>

source§

impl BitXor for Wrapping<i128>

source§

impl BitXor for Wrapping<isize>

source§

impl BitXor for Wrapping<u8>

source§

impl BitXor for Wrapping<u16>

source§

impl BitXor for Wrapping<u32>

source§

impl BitXor for Wrapping<u64>

source§

impl BitXor for Wrapping<u128>

source§

impl BitXor for Wrapping<usize>

1.74.0 · source§

impl BitXor for Saturating<i8>

1.74.0 · source§

impl BitXor for Saturating<i16>

1.74.0 · source§

impl BitXor for Saturating<i32>

1.74.0 · source§

impl BitXor for Saturating<i64>

1.74.0 · source§

impl BitXor for Saturating<i128>

1.74.0 · source§

impl BitXor for Saturating<isize>

1.74.0 · source§

impl BitXor for Saturating<u8>

1.74.0 · source§

impl BitXor for Saturating<u16>

1.74.0 · source§

impl BitXor for Saturating<u32>

1.74.0 · source§

impl BitXor for Saturating<u64>

1.74.0 · source§

impl BitXor for Saturating<u128>

1.74.0 · source§

impl BitXor for Saturating<usize>

source§

impl BitXor<&bool> for &bool

§

type Output = <bool as BitXor>::Output

source§

impl BitXor<&bool> for bool

§

type Output = <bool as BitXor>::Output

source§

impl BitXor<&i8> for &i8

§

type Output = <i8 as BitXor>::Output

source§

impl BitXor<&i8> for i8

§

type Output = <i8 as BitXor>::Output

source§

impl BitXor<&i16> for &i16

§

type Output = <i16 as BitXor>::Output

source§

impl BitXor<&i16> for i16

§

type Output = <i16 as BitXor>::Output

source§

impl BitXor<&i32> for &i32

§

type Output = <i32 as BitXor>::Output

source§

impl BitXor<&i32> for i32

§

type Output = <i32 as BitXor>::Output

source§

impl BitXor<&i64> for &i64

§

type Output = <i64 as BitXor>::Output

source§

impl BitXor<&i64> for i64

§

type Output = <i64 as BitXor>::Output

source§

impl BitXor<&i128> for &i128

§

type Output = <i128 as BitXor>::Output

source§

impl BitXor<&i128> for i128

§

type Output = <i128 as BitXor>::Output

source§

impl BitXor<&isize> for &isize

source§

impl BitXor<&isize> for isize

source§

impl BitXor<&u8> for &u8

§

type Output = <u8 as BitXor>::Output

source§

impl BitXor<&u8> for u8

§

type Output = <u8 as BitXor>::Output

source§

impl BitXor<&u16> for &u16

§

type Output = <u16 as BitXor>::Output

source§

impl BitXor<&u16> for u16

§

type Output = <u16 as BitXor>::Output

source§

impl BitXor<&u32> for &u32

§

type Output = <u32 as BitXor>::Output

source§

impl BitXor<&u32> for u32

§

type Output = <u32 as BitXor>::Output

source§

impl BitXor<&u64> for &u64

§

type Output = <u64 as BitXor>::Output

source§

impl BitXor<&u64> for u64

§

type Output = <u64 as BitXor>::Output

source§

impl BitXor<&u128> for &u128

§

type Output = <u128 as BitXor>::Output

source§

impl BitXor<&u128> for u128

§

type Output = <u128 as BitXor>::Output

source§

impl BitXor<&usize> for &usize

source§

impl BitXor<&usize> for usize

1.14.0 · source§

impl BitXor<&Wrapping<i8>> for &Wrapping<i8>

1.14.0 · source§

impl BitXor<&Wrapping<i8>> for Wrapping<i8>

1.14.0 · source§

impl BitXor<&Wrapping<i16>> for &Wrapping<i16>

1.14.0 · source§

impl BitXor<&Wrapping<i16>> for Wrapping<i16>

1.14.0 · source§

impl BitXor<&Wrapping<i32>> for &Wrapping<i32>

1.14.0 · source§

impl BitXor<&Wrapping<i32>> for Wrapping<i32>

1.14.0 · source§

impl BitXor<&Wrapping<i64>> for &Wrapping<i64>

1.14.0 · source§

impl BitXor<&Wrapping<i64>> for Wrapping<i64>

1.14.0 · source§

impl BitXor<&Wrapping<i128>> for &Wrapping<i128>

1.14.0 · source§

impl BitXor<&Wrapping<i128>> for Wrapping<i128>

1.14.0 · source§

impl BitXor<&Wrapping<isize>> for &Wrapping<isize>

1.14.0 · source§

impl BitXor<&Wrapping<isize>> for Wrapping<isize>

1.14.0 · source§

impl BitXor<&Wrapping<u8>> for &Wrapping<u8>

1.14.0 · source§

impl BitXor<&Wrapping<u8>> for Wrapping<u8>

1.14.0 · source§

impl BitXor<&Wrapping<u16>> for &Wrapping<u16>

1.14.0 · source§

impl BitXor<&Wrapping<u16>> for Wrapping<u16>

1.14.0 · source§

impl BitXor<&Wrapping<u32>> for &Wrapping<u32>

1.14.0 · source§

impl BitXor<&Wrapping<u32>> for Wrapping<u32>

1.14.0 · source§

impl BitXor<&Wrapping<u64>> for &Wrapping<u64>

1.14.0 · source§

impl BitXor<&Wrapping<u64>> for Wrapping<u64>

1.14.0 · source§

impl BitXor<&Wrapping<u128>> for &Wrapping<u128>

1.14.0 · source§

impl BitXor<&Wrapping<u128>> for Wrapping<u128>

1.14.0 · source§

impl BitXor<&Wrapping<usize>> for &Wrapping<usize>

1.14.0 · source§

impl BitXor<&Wrapping<usize>> for Wrapping<usize>

1.74.0 · source§

impl BitXor<&Saturating<i8>> for &Saturating<i8>

1.74.0 · source§

impl BitXor<&Saturating<i8>> for Saturating<i8>

1.74.0 · source§

impl BitXor<&Saturating<i16>> for &Saturating<i16>

1.74.0 · source§

impl BitXor<&Saturating<i16>> for Saturating<i16>

1.74.0 · source§

impl BitXor<&Saturating<i32>> for &Saturating<i32>

1.74.0 · source§

impl BitXor<&Saturating<i32>> for Saturating<i32>

1.74.0 · source§

impl BitXor<&Saturating<i64>> for &Saturating<i64>

1.74.0 · source§

impl BitXor<&Saturating<i64>> for Saturating<i64>

1.74.0 · source§

impl BitXor<&Saturating<i128>> for &Saturating<i128>

1.74.0 · source§

impl BitXor<&Saturating<i128>> for Saturating<i128>

1.74.0 · source§

impl BitXor<&Saturating<isize>> for &Saturating<isize>

1.74.0 · source§

impl BitXor<&Saturating<isize>> for Saturating<isize>

1.74.0 · source§

impl BitXor<&Saturating<u8>> for &Saturating<u8>

1.74.0 · source§

impl BitXor<&Saturating<u8>> for Saturating<u8>

1.74.0 · source§

impl BitXor<&Saturating<u16>> for &Saturating<u16>

1.74.0 · source§

impl BitXor<&Saturating<u16>> for Saturating<u16>

1.74.0 · source§

impl BitXor<&Saturating<u32>> for &Saturating<u32>

1.74.0 · source§

impl BitXor<&Saturating<u32>> for Saturating<u32>

1.74.0 · source§

impl BitXor<&Saturating<u64>> for &Saturating<u64>

1.74.0 · source§

impl BitXor<&Saturating<u64>> for Saturating<u64>

1.74.0 · source§

impl BitXor<&Saturating<u128>> for &Saturating<u128>

1.74.0 · source§

impl BitXor<&Saturating<u128>> for Saturating<u128>

1.74.0 · source§

impl BitXor<&Saturating<usize>> for &Saturating<usize>

1.74.0 · source§

impl BitXor<&Saturating<usize>> for Saturating<usize>

source§

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

§

type Output = <bool as BitXor>::Output

source§

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

§

type Output = <i8 as BitXor>::Output

source§

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

§

type Output = <i16 as BitXor>::Output

source§

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

§

type Output = <i32 as BitXor>::Output

source§

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

§

type Output = <i64 as BitXor>::Output

source§

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

§

type Output = <i128 as BitXor>::Output

source§

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

source§

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

§

type Output = <u8 as BitXor>::Output

source§

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

§

type Output = <u16 as BitXor>::Output

source§

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

§

type Output = <u32 as BitXor>::Output

source§

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

§

type Output = <u64 as BitXor>::Output

source§

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

§

type Output = <u128 as BitXor>::Output

source§

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

1.14.0 · source§

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

1.14.0 · source§

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

1.14.0 · source§

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

1.14.0 · source§

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

1.14.0 · source§

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

1.14.0 · source§

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

1.14.0 · source§

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

1.14.0 · source§

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

1.14.0 · source§

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

1.14.0 · source§

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

1.14.0 · source§

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

1.14.0 · source§

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

1.74.0 · source§

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

1.74.0 · source§

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

1.74.0 · source§

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

1.74.0 · source§

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

1.74.0 · source§

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

1.74.0 · source§

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

1.74.0 · source§

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

1.74.0 · source§

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

1.74.0 · source§

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

1.74.0 · source§

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

1.74.0 · source§

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

1.74.0 · source§

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

source§

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

§

type Output = Simd<T, LANES>

source§

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

§

type Output = BTreeSet<T, A>

source§

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

§

type Output = HashSet<T, S>

source§

impl<T, S> BitXor<&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, const LANES: usize> BitXor for Mask<T, LANES>where T: MaskElement, LaneCount<LANES>: SupportedLaneCount,

§

type Output = Mask<T, LANES>

source§

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

§

type Output = Simd<T, LANES>

source§

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

§

type Output = Mask<T, LANES>

source§

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

§

type Output = Mask<T, LANES>

source§

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

§

type Output = Simd<T, LANES>

source§

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

§

type Output = Simd<i8, N>

source§

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

§

type Output = Simd<i16, N>

source§

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

§

type Output = Simd<i32, N>

source§

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

§

type Output = Simd<i64, N>

source§

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

§

type Output = Simd<isize, N>

source§

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

§

type Output = Simd<u8, N>

source§

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

§

type Output = Simd<u16, N>

source§

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

§

type Output = Simd<u32, N>

source§

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

§

type Output = Simd<u64, N>

source§

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

§

type Output = Simd<usize, N>