Trait BitXor

1.6.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

Source§

impl BitXor for DrawFlags

Source§

impl BitXor for DrawListFlags

Source§

impl BitXor for BVec2

Source§

impl BitXor for BVec3

Source§

impl BitXor for BVec3A

Source§

impl BitXor for BVec4

Source§

impl BitXor for BVec4A

Source§

impl BitXor for BackendFlags

Source§

impl BitXor for ButtonFlags

Source§

impl BitXor for ColorEditFlags

Source§

impl BitXor for ComboBoxFlags

Source§

impl BitXor for ConfigFlags

Source§

impl BitXor for DragDropFlags

Source§

impl BitXor for FontAtlasFlags

Source§

impl BitXor for I16Vec2

Source§

impl BitXor for I16Vec3

Source§

impl BitXor for I16Vec4

Source§

impl BitXor for I64Vec2

Source§

impl BitXor for I64Vec3

Source§

impl BitXor for I64Vec4

Source§

impl BitXor for IVec2

Source§

impl BitXor for IVec3

Source§

impl BitXor for IVec4

Source§

impl BitXor for InputTextCallback

Source§

impl BitXor for InputTextFlags

Source§

impl BitXor for InputTextMultilineCallback

Source§

impl BitXor for ItemHoveredFlags

Source§

impl BitXor for JoystickHats

Source§

impl BitXor for Modifiers

Source§

impl BitXor for SelectableFlags

Source§

impl BitXor for SliderFlags

Source§

impl BitXor for TabBarFlags

Source§

impl BitXor for TabItemFlags

Source§

impl BitXor for TreeNodeFlags

Source§

impl BitXor for U16Vec2

Source§

impl BitXor for U16Vec3

Source§

impl BitXor for U16Vec4

Source§

impl BitXor for U64Vec2

Source§

impl BitXor for U64Vec3

Source§

impl BitXor for U64Vec4

Source§

impl BitXor for UVec2

Source§

impl BitXor for UVec3

Source§

impl BitXor for UVec4

Source§

impl BitXor for WindowFlags

Source§

impl BitXor for WindowFocusedFlags

Source§

impl BitXor for WindowHoveredFlags

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 BigInt

Source§

impl BitXor for BigUint

Source§

impl BitXor for Transformations

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>

Source§

impl BitXor<&BigInt> for &BigInt

Source§

impl BitXor<&BigInt> for BigInt

Source§

impl BitXor<&BigUint> for &BigUint

Source§

impl BitXor<&BigUint> for BigUint

Source§

impl BitXor<i16> for I16Vec2

Source§

impl BitXor<i16> for I16Vec3

Source§

impl BitXor<i16> for I16Vec4

Source§

impl BitXor<i32> for IVec2

Source§

impl BitXor<i32> for IVec3

Source§

impl BitXor<i32> for IVec4

Source§

impl BitXor<i64> for I64Vec2

Source§

impl BitXor<i64> for I64Vec3

Source§

impl BitXor<i64> for I64Vec4

Source§

impl BitXor<u16> for U16Vec2

Source§

impl BitXor<u16> for U16Vec3

Source§

impl BitXor<u16> for U16Vec4

Source§

impl BitXor<u32> for UVec2

Source§

impl BitXor<u32> for UVec3

Source§

impl BitXor<u32> for UVec4

Source§

impl BitXor<u64> for U64Vec2

Source§

impl BitXor<u64> for U64Vec3

Source§

impl BitXor<u64> for U64Vec4

Source§

impl BitXor<BigInt> for &BigInt

Source§

impl BitXor<BigUint> for &BigUint

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>

Source§

impl<O> BitXor for I16<O>
where O: ByteOrder,

Source§

impl<O> BitXor for I32<O>
where O: ByteOrder,

Source§

impl<O> BitXor for I64<O>
where O: ByteOrder,

Source§

impl<O> BitXor for I128<O>
where O: ByteOrder,

Source§

impl<O> BitXor for Isize<O>
where O: ByteOrder,

Source§

impl<O> BitXor for U16<O>
where O: ByteOrder,

Source§

impl<O> BitXor for U32<O>
where O: ByteOrder,

Source§

impl<O> BitXor for U64<O>
where O: ByteOrder,

Source§

impl<O> BitXor for U128<O>
where O: ByteOrder,

Source§

impl<O> BitXor for Usize<O>
where O: ByteOrder,

Source§

impl<O> BitXor<i16> for I16<O>
where O: ByteOrder,

Source§

impl<O> BitXor<i32> for I32<O>
where O: ByteOrder,

Source§

impl<O> BitXor<i64> for I64<O>
where O: ByteOrder,

Source§

impl<O> BitXor<i128> for I128<O>
where O: ByteOrder,

Source§

impl<O> BitXor<isize> for Isize<O>
where O: ByteOrder,

Source§

impl<O> BitXor<u16> for U16<O>
where O: ByteOrder,

Source§

impl<O> BitXor<u32> for U32<O>
where O: ByteOrder,

Source§

impl<O> BitXor<u64> for U64<O>
where O: ByteOrder,

Source§

impl<O> BitXor<u128> for U128<O>
where O: ByteOrder,

Source§

impl<O> BitXor<usize> for Usize<O>
where O: ByteOrder,

Source§

impl<O> BitXor<I16<O>> for i16
where O: ByteOrder,

Source§

impl<O> BitXor<I32<O>> for i32
where O: ByteOrder,

Source§

impl<O> BitXor<I64<O>> for i64
where O: ByteOrder,

Source§

impl<O> BitXor<I128<O>> for i128
where O: ByteOrder,

Source§

impl<O> BitXor<Isize<O>> for isize
where O: ByteOrder,

Source§

impl<O> BitXor<U16<O>> for u16
where O: ByteOrder,

Source§

impl<O> BitXor<U32<O>> for u32
where O: ByteOrder,

Source§

impl<O> BitXor<U64<O>> for u64
where O: ByteOrder,

Source§

impl<O> BitXor<U128<O>> for u128
where O: ByteOrder,

Source§

impl<O> BitXor<Usize<O>> for usize
where O: ByteOrder,

1.0.0 · Source§

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

1.0.0 · Source§

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

Source§

type Output = HashSet<T, S>

Source§

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

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>