Skip to main content

BitXor

Trait BitXor 

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

1.0.0 (const: unstable) · Source

type Output

The resulting type after applying the ^ operator.

Required Methods§

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

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§

Source§

impl BitXor for BigInt

Source§

impl BitXor for BigUint

Source§

impl BitXor for PackedNull

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<i8>

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<i16>

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<i32>

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<i64>

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<i128>

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<isize>

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<u8>

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<u16>

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<u32>

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<u64>

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<u128>

1.74.0 (const: unstable) · Source§

impl BitXor for Saturating<usize>

Source§

impl BitXor for Style

Source§

impl BitXor for Styles

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<i8>

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<i16>

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<i32>

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<i64>

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<i128>

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<isize>

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<u8>

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<u16>

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<u32>

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<u64>

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<u128>

1.0.0 (const: unstable) · Source§

impl BitXor for Wrapping<usize>

1.0.0 (const: unstable) · Source§

impl BitXor for bool

1.0.0 (const: unstable) · Source§

impl BitXor for i8

1.0.0 (const: unstable) · Source§

impl BitXor for i16

1.0.0 (const: unstable) · Source§

impl BitXor for i32

1.0.0 (const: unstable) · Source§

impl BitXor for i64

1.0.0 (const: unstable) · Source§

impl BitXor for i128

1.0.0 (const: unstable) · Source§

impl BitXor for isize

1.0.0 (const: unstable) · Source§

impl BitXor for u8

1.0.0 (const: unstable) · Source§

impl BitXor for u16

1.0.0 (const: unstable) · Source§

impl BitXor for u32

1.0.0 (const: unstable) · Source§

impl BitXor for u64

1.0.0 (const: unstable) · Source§

impl BitXor for u128

1.0.0 (const: unstable) · Source§

impl BitXor for usize

Source§

impl BitXor<&BigInt> for &BigInt

Source§

impl BitXor<&BigInt> for BigInt

Source§

impl BitXor<&BigUint> for &BigUint

Source§

impl BitXor<&BigUint> for BigUint

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

Source§

impl BitXor<&Style> for &Style

Source§

impl BitXor<&Style> for &Styles

Source§

impl BitXor<&Style> for Style

Source§

impl BitXor<&Style> for Styles

Source§

impl BitXor<&Styles> for &Style

Source§

impl BitXor<&Styles> for &Styles

Source§

impl BitXor<&Styles> for Style

Source§

impl BitXor<&Styles> for Styles

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.0.0 (const: unstable) · Source§

impl BitXor<&bool> for &bool

1.0.0 (const: unstable) · Source§

impl BitXor<&bool> for bool

1.0.0 (const: unstable) · Source§

impl BitXor<&i8> for &i8

1.0.0 (const: unstable) · Source§

impl BitXor<&i8> for i8

1.0.0 (const: unstable) · Source§

impl BitXor<&i16> for &i16

1.0.0 (const: unstable) · Source§

impl BitXor<&i16> for i16

1.0.0 (const: unstable) · Source§

impl BitXor<&i32> for &i32

1.0.0 (const: unstable) · Source§

impl BitXor<&i32> for i32

1.0.0 (const: unstable) · Source§

impl BitXor<&i64> for &i64

1.0.0 (const: unstable) · Source§

impl BitXor<&i64> for i64

1.0.0 (const: unstable) · Source§

impl BitXor<&i128> for &i128

1.0.0 (const: unstable) · Source§

impl BitXor<&i128> for i128

1.0.0 (const: unstable) · Source§

impl BitXor<&isize> for &isize

1.0.0 (const: unstable) · Source§

impl BitXor<&isize> for isize

1.0.0 (const: unstable) · Source§

impl BitXor<&u8> for &u8

1.0.0 (const: unstable) · Source§

impl BitXor<&u8> for u8

1.0.0 (const: unstable) · Source§

impl BitXor<&u16> for &u16

1.0.0 (const: unstable) · Source§

impl BitXor<&u16> for u16

1.0.0 (const: unstable) · Source§

impl BitXor<&u32> for &u32

1.0.0 (const: unstable) · Source§

impl BitXor<&u32> for u32

1.0.0 (const: unstable) · Source§

impl BitXor<&u64> for &u64

1.0.0 (const: unstable) · Source§

impl BitXor<&u64> for u64

1.0.0 (const: unstable) · Source§

impl BitXor<&u128> for &u128

1.0.0 (const: unstable) · Source§

impl BitXor<&u128> for u128

1.0.0 (const: unstable) · Source§

impl BitXor<&usize> for &usize

1.0.0 (const: unstable) · Source§

impl BitXor<&usize> for usize

Source§

impl BitXor<BigInt> for &BigInt

Source§

impl BitXor<BigUint> for &BigUint

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

1.74.0 (const: unstable) · Source§

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

Source§

impl BitXor<Style> for &Style

Source§

impl BitXor<Style> for &Styles

Source§

impl BitXor<Style> for Styles

Source§

impl BitXor<Styles> for &Style

Source§

impl BitXor<Styles> for &Styles

Source§

impl BitXor<Styles> for Style

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.14.0 (const: unstable) · Source§

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

1.0.0 (const: unstable) · Source§

impl BitXor<bool> for &bool

1.0.0 (const: unstable) · Source§

impl BitXor<i8> for &i8

1.0.0 (const: unstable) · Source§

impl BitXor<i16> for &i16

1.0.0 (const: unstable) · Source§

impl BitXor<i32> for &i32

1.0.0 (const: unstable) · Source§

impl BitXor<i64> for &i64

1.0.0 (const: unstable) · Source§

impl BitXor<i128> for &i128

1.0.0 (const: unstable) · Source§

impl BitXor<isize> for &isize

1.0.0 (const: unstable) · Source§

impl BitXor<u8> for &u8

1.0.0 (const: unstable) · Source§

impl BitXor<u16> for &u16

1.0.0 (const: unstable) · Source§

impl BitXor<u32> for &u32

1.0.0 (const: unstable) · Source§

impl BitXor<u64> for &u64

1.0.0 (const: unstable) · Source§

impl BitXor<u128> for &u128

1.0.0 (const: unstable) · Source§

impl BitXor<usize> for &usize

Source§

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

Source§

type Output = Simd<T, N>

Source§

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

Source§

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

1.0.0 · Source§

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

Source§

impl<T, S1, S2> BitXor<&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> BitXor<&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> BitXor<&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> BitXor for Mask<T, N>
where T: MaskElement,

Source§

type Output = Mask<T, N>

Source§

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

Source§

type Output = Simd<T, N>

Source§

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

Source§

type Output = Mask<T, N>

Source§

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

Source§

type Output = Simd<T, N>

Source§

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

Source§

type Output = Mask<T, N>

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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