Trait 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§

1.0.0 · Source

type Output

The resulting type after applying the ^ operator.

Required Methods§

1.0.0 · 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§

1.0.0 · Source§

impl BitXor for bool

1.0.0 · Source§

impl BitXor for i8

1.0.0 · Source§

impl BitXor for i16

1.0.0 · Source§

impl BitXor for i32

1.0.0 · Source§

impl BitXor for i64

1.0.0 · Source§

impl BitXor for i128

1.0.0 · Source§

impl BitXor for isize

1.0.0 · Source§

impl BitXor for u8

1.0.0 · Source§

impl BitXor for u16

1.0.0 · Source§

impl BitXor for u32

1.0.0 · Source§

impl BitXor for u64

1.0.0 · Source§

impl BitXor for u128

1.0.0 · Source§

impl BitXor for 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>

1.0.0 · Source§

impl BitXor for Wrapping<i8>

1.0.0 · Source§

impl BitXor for Wrapping<i16>

1.0.0 · Source§

impl BitXor for Wrapping<i32>

1.0.0 · Source§

impl BitXor for Wrapping<i64>

1.0.0 · Source§

impl BitXor for Wrapping<i128>

1.0.0 · Source§

impl BitXor for Wrapping<isize>

1.0.0 · Source§

impl BitXor for Wrapping<u8>

1.0.0 · Source§

impl BitXor for Wrapping<u16>

1.0.0 · Source§

impl BitXor for Wrapping<u32>

1.0.0 · Source§

impl BitXor for Wrapping<u64>

1.0.0 · Source§

impl BitXor for Wrapping<u128>

1.0.0 · Source§

impl BitXor for Wrapping<usize>

Source§

impl BitXor for CreateFlags

Source§

impl BitXor for ReadFlags

Source§

impl BitXor for WatchFlags

Source§

impl BitXor for Access

Source§

impl BitXor for AtFlags

Source§

impl BitXor for FallocateFlags

Source§

impl BitXor for MemfdFlags

Source§

impl BitXor for Mode

Source§

impl BitXor for OFlags

Source§

impl BitXor for RenameFlags

Source§

impl BitXor for ResolveFlags

Source§

impl BitXor for SealFlags

Source§

impl BitXor for StatVfsMountFlags

Source§

impl BitXor for DupFlags

Source§

impl BitXor for FdFlags

Source§

impl BitXor for ReadWriteFlags

Source§

impl BitXor for MapFlags

Source§

impl BitXor for MlockAllFlags

Source§

impl BitXor for MlockFlags

Source§

impl BitXor for MprotectFlags

Source§

impl BitXor for MremapFlags

Source§

impl BitXor for MsyncFlags

Source§

impl BitXor for ProtFlags

Source§

impl BitXor for UserfaultfdFlags

Source§

impl BitXor for Flags

Source§

impl BitXor for WaitFlags

Source§

impl BitXor for TimerfdFlags

Source§

impl BitXor for TimerfdTimerFlags

Source§

impl BitXor for IFlags

Source§

impl BitXor for StatxAttributes

Source§

impl BitXor for StatxFlags

Source§

impl BitXor for XattrFlags

Source§

impl BitXor for PidfdFlags

Source§

impl BitXor for PidfdGetfdFlags

Source§

impl BitXor for FloatingPointEmulationControl

Source§

impl BitXor for FloatingPointExceptionMode

Source§

impl BitXor for SpeculationFeatureControl

Source§

impl BitXor for SpeculationFeatureState

Source§

impl BitXor for UnalignedAccessControl

Source§

impl BitXor for WaitIdOptions

Source§

impl BitXor for WaitOptions

Source§

impl BitXor for KernelSigactionFlags

Source§

impl BitXor for WaitvFlags

Source§

impl BitXor for CapabilityFlags

Source§

impl BitXor for MembarrierQuery

Source§

impl BitXor for CapabilitiesSecureBits

Source§

impl BitXor for TaggedAddressMode

Source§

impl BitXor for ThreadNameSpaceType

Source§

impl BitXor for UnshareFlags

1.0.0 · Source§

impl BitXor<&bool> for &bool

1.0.0 · Source§

impl BitXor<&bool> for bool

1.0.0 · Source§

impl BitXor<&i8> for &i8

1.0.0 · Source§

impl BitXor<&i8> for i8

1.0.0 · Source§

impl BitXor<&i16> for &i16

1.0.0 · Source§

impl BitXor<&i16> for i16

1.0.0 · Source§

impl BitXor<&i32> for &i32

1.0.0 · Source§

impl BitXor<&i32> for i32

1.0.0 · Source§

impl BitXor<&i64> for &i64

1.0.0 · Source§

impl BitXor<&i64> for i64

1.0.0 · Source§

impl BitXor<&i128> for &i128

1.0.0 · Source§

impl BitXor<&i128> for i128

1.0.0 · Source§

impl BitXor<&isize> for &isize

1.0.0 · Source§

impl BitXor<&isize> for isize

1.0.0 · Source§

impl BitXor<&u8> for &u8

1.0.0 · Source§

impl BitXor<&u8> for u8

1.0.0 · Source§

impl BitXor<&u16> for &u16

1.0.0 · Source§

impl BitXor<&u16> for u16

1.0.0 · Source§

impl BitXor<&u32> for &u32

1.0.0 · Source§

impl BitXor<&u32> for u32

1.0.0 · Source§

impl BitXor<&u64> for &u64

1.0.0 · Source§

impl BitXor<&u64> for u64

1.0.0 · Source§

impl BitXor<&u128> for &u128

1.0.0 · Source§

impl BitXor<&u128> for u128

1.0.0 · Source§

impl BitXor<&usize> for &usize

1.0.0 · Source§

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

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.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

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>

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>>, LaneCount<N>: SupportedLaneCount,

Source§

type Output = Simd<T, N>

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, const N: usize> BitXor for Mask<T, N>

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>>, LaneCount<N>: SupportedLaneCount,

Source§

type Output = Simd<T, N>

Source§

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

Source§

type Output = Mask<T, N>

Source§

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

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>>, LaneCount<N>: SupportedLaneCount,

Source§

type Output = Simd<T, N>

Source§

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

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>

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>