Trait grafix_toolbox::lib::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§

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

§

type Output = bool

1.0.0 · source§

impl BitXor for i8

§

type Output = i8

1.0.0 · source§

impl BitXor for i16

§

type Output = i16

1.0.0 · source§

impl BitXor for i32

§

type Output = i32

1.0.0 · source§

impl BitXor for i64

§

type Output = i64

1.0.0 · source§

impl BitXor for i128

§

type Output = i128

1.0.0 · source§

impl BitXor for isize

1.0.0 · source§

impl BitXor for u8

§

type Output = u8

1.0.0 · source§

impl BitXor for u16

§

type Output = u16

1.0.0 · source§

impl BitXor for u32

§

type Output = u32

1.0.0 · source§

impl BitXor for u64

§

type Output = u64

1.0.0 · source§

impl BitXor for u128

§

type Output = u128

1.0.0 · source§

impl BitXor for usize

source§

impl BitXor for Mod

§

type Output = Mod

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 JoystickHats

source§

impl BitXor for Modifiers

source§

impl BitXor for rustix::backend::event::epoll::CreateFlags

source§

impl BitXor for EventFlags

source§

impl BitXor for PollFlags

source§

impl BitXor for EventfdFlags

source§

impl BitXor for rustix::backend::fs::inotify::CreateFlags

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

§

type Output = 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 StatxFlags

source§

impl BitXor for DupFlags

source§

impl BitXor for FdFlags

source§

impl BitXor for ReadWriteFlags

source§

impl BitXor for MountFlags

source§

impl BitXor for MountPropagationFlags

source§

impl BitXor for UnmountFlags

source§

impl BitXor for RecvFlags

source§

impl BitXor for SendFlags

source§

impl BitXor for PipeFlags

source§

impl BitXor for SpliceFlags

source§

impl BitXor for TimerfdFlags

source§

impl BitXor for TimerfdTimerFlags

source§

impl BitXor for IFlags

source§

impl BitXor for XattrFlags

source§

impl BitXor for SocketFlags

source§

impl BitXor for SockaddrXdpFlags

source§

impl BitXor for XdpDescOptions

source§

impl BitXor for XdpOptionsFlags

source§

impl BitXor for XdpRingFlags

source§

impl BitXor for XdpUmemRegFlags

source§

impl BitXor for MembarrierQuery

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 WaitOptions

source§

impl BitXor for WaitidOptions

source§

impl BitXor for m128

§

type Output = m128

source§

impl BitXor for m128d

source§

impl BitXor for m128i

source§

impl BitXor for AutoSimd<[bool; 1]>

§

type Output = AutoSimd<[bool; 1]>

source§

impl BitXor for AutoSimd<[bool; 2]>

§

type Output = AutoSimd<[bool; 2]>

source§

impl BitXor for AutoSimd<[bool; 4]>

§

type Output = AutoSimd<[bool; 4]>

source§

impl BitXor for AutoSimd<[bool; 8]>

§

type Output = AutoSimd<[bool; 8]>

source§

impl BitXor for AutoSimd<[bool; 16]>

source§

impl BitXor for AutoSimd<[bool; 32]>

source§

impl BitXor for WideBoolF32x4

source§

impl BitXor for WideBoolF32x8

source§

impl BitXor for WideBoolF64x4

source§

impl BitXor for B0

Xor between 0 and 0 ( 0 ^ 0 = 0)

§

type Output = B0

source§

impl BitXor for B1

Xor between 1 and 1 ( 1 ^ 1 = 0)

§

type Output = B0

source§

impl BitXor for f32x4

source§

impl BitXor for f32x8

source§

impl BitXor for f64x2

source§

impl BitXor for f64x4

source§

impl BitXor for i8x16

source§

impl BitXor for i8x32

source§

impl BitXor for i16x8

source§

impl BitXor for i16x16

source§

impl BitXor for i32x4

source§

impl BitXor for i32x8

source§

impl BitXor for i64x2

source§

impl BitXor for i64x4

source§

impl BitXor for u8x16

source§

impl BitXor for u16x8

source§

impl BitXor for u16x16

source§

impl BitXor for u32x4

source§

impl BitXor for u32x8

source§

impl BitXor for u64x2

source§

impl BitXor for u64x4

1.0.0 · source§

impl BitXor<&bool> for &bool

§

type Output = <bool as BitXor>::Output

1.0.0 · source§

impl BitXor<&bool> for bool

§

type Output = <bool as BitXor>::Output

1.0.0 · source§

impl BitXor<&i8> for &i8

§

type Output = <i8 as BitXor>::Output

1.0.0 · source§

impl BitXor<&i8> for i8

§

type Output = <i8 as BitXor>::Output

1.0.0 · source§

impl BitXor<&i16> for &i16

§

type Output = <i16 as BitXor>::Output

1.0.0 · source§

impl BitXor<&i16> for i16

§

type Output = <i16 as BitXor>::Output

1.0.0 · source§

impl BitXor<&i32> for &i32

§

type Output = <i32 as BitXor>::Output

1.0.0 · source§

impl BitXor<&i32> for i32

§

type Output = <i32 as BitXor>::Output

1.0.0 · source§

impl BitXor<&i64> for &i64

§

type Output = <i64 as BitXor>::Output

1.0.0 · source§

impl BitXor<&i64> for i64

§

type Output = <i64 as BitXor>::Output

1.0.0 · source§

impl BitXor<&i128> for &i128

§

type Output = <i128 as BitXor>::Output

1.0.0 · source§

impl BitXor<&i128> for i128

§

type Output = <i128 as BitXor>::Output

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

§

type Output = <u8 as BitXor>::Output

1.0.0 · source§

impl BitXor<&u8> for u8

§

type Output = <u8 as BitXor>::Output

1.0.0 · source§

impl BitXor<&u16> for &u16

§

type Output = <u16 as BitXor>::Output

1.0.0 · source§

impl BitXor<&u16> for u16

§

type Output = <u16 as BitXor>::Output

1.0.0 · source§

impl BitXor<&u32> for &u32

§

type Output = <u32 as BitXor>::Output

1.0.0 · source§

impl BitXor<&u32> for u32

§

type Output = <u32 as BitXor>::Output

1.0.0 · source§

impl BitXor<&u64> for &u64

§

type Output = <u64 as BitXor>::Output

1.0.0 · source§

impl BitXor<&u64> for u64

§

type Output = <u64 as BitXor>::Output

1.0.0 · source§

impl BitXor<&u128> for &u128

§

type Output = <u128 as BitXor>::Output

1.0.0 · source§

impl BitXor<&u128> for u128

§

type Output = <u128 as BitXor>::Output

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>

source§

impl BitXor<&f32x4> for f32x4

source§

impl BitXor<&f32x8> for f32x8

source§

impl BitXor<&f64x2> for f64x2

source§

impl BitXor<&f64x4> for f64x4

source§

impl BitXor<&i8x16> for i8x16

source§

impl BitXor<&i8x32> for i8x32

source§

impl BitXor<&i16x8> for i16x8

source§

impl BitXor<&i16x16> for i16x16

source§

impl BitXor<&i32x4> for i32x4

source§

impl BitXor<&i32x8> for i32x8

source§

impl BitXor<&i64x2> for i64x2

source§

impl BitXor<&u8x16> for u8x16

source§

impl BitXor<&u16x8> for u16x8

source§

impl BitXor<&u16x16> for u16x16

source§

impl BitXor<&u32x4> for u32x4

source§

impl BitXor<&u32x8> for u32x8

source§

impl BitXor<&u64x2> for u64x2

source§

impl BitXor<&u64x4> for u64x4

source§

impl BitXor<B0> for B1

Xor between 1 and 0 ( 1 ^ 0 = 1)

§

type Output = B1

source§

impl BitXor<B1> for B0

Xor between 0 and 1 ( 0 ^ 1 = 1)

§

type Output = B1

1.0.0 · source§

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

§

type Output = <bool as BitXor>::Output

1.0.0 · source§

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

§

type Output = <i8 as BitXor>::Output

1.0.0 · source§

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

§

type Output = <i16 as BitXor>::Output

1.0.0 · source§

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

§

type Output = <i32 as BitXor>::Output

1.0.0 · source§

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

§

type Output = <i64 as BitXor>::Output

1.0.0 · source§

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

§

type Output = <i128 as BitXor>::Output

1.0.0 · source§

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

1.0.0 · source§

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

§

type Output = <u8 as BitXor>::Output

1.0.0 · source§

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

§

type Output = <u16 as BitXor>::Output

1.0.0 · source§

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

§

type Output = <u32 as BitXor>::Output

1.0.0 · source§

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

§

type Output = <u64 as BitXor>::Output

1.0.0 · source§

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

§

type Output = <u128 as BitXor>::Output

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,

§

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,

§

type Output = BTreeSet<T, A>

1.0.0 · source§

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

§

type Output = HashSet<T, S>

source§

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

§

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,

§

type Output = Simd<T, N>

source§

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

§

type Output = Mask<T, N>

source§

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

§

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,

§

type Output = Simd<T, N>

source§

impl<Ul, Bl, Ur> BitXor<Ur> for UInt<Ul, Bl>
where Ul: Unsigned, Bl: Bit, Ur: Unsigned, UInt<Ul, Bl>: PrivateXor<Ur>, <UInt<Ul, Bl> as PrivateXor<Ur>>::Output: Trim,

Xoring unsigned integers. We use our PrivateXor operator and then Trim the output.

§

type Output = <<UInt<Ul, Bl> as PrivateXor<Ur>>::Output as Trim>::Output

source§

impl<Ur> BitXor<Ur> for UTerm
where Ur: Unsigned,

0 ^ X = X

§

type Output = Ur

source§

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

§

type Output = Simd<i8, N>

source§

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

§

type Output = Simd<i16, N>

source§

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

§

type Output = Simd<i32, N>

source§

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

§

type Output = Simd<i64, N>

source§

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

§

type Output = Simd<isize, N>

source§

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

§

type Output = Simd<u8, N>

source§

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

§

type Output = Simd<u16, N>

source§

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

§

type Output = Simd<u32, N>

source§

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

§

type Output = Simd<u64, N>

source§

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

§

type Output = Simd<usize, N>