Trait no_std_compat::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

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>

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>

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

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

impl<A, O, Rhs> BitXor<Rhs> for BitArray<A, O>
where A: BitViewSized, O: BitOrder, BitSlice<A::Store, O>: BitXorAssign<Rhs>,

impl<T, O, Rhs> BitXor<Rhs> for BitBox<T, O>
where T: BitStore, O: BitOrder, BitSlice<T, O>: BitXorAssign<Rhs>,

impl<T, O, Rhs> BitXor<Rhs> for BitVec<T, O>
where T: BitStore, O: BitOrder, BitSlice<T, O>: BitXorAssign<Rhs>,

impl BitXor for Ieee32

impl BitXor for Ieee64

impl BitXor for Limb

impl<const LIMBS: usize> BitXor for Uint<LIMBS>

impl<const LIMBS: usize> BitXor for Wrapping<Uint<LIMBS>>

impl<const LIMBS: usize> BitXor<&Uint<LIMBS>> for &Uint<LIMBS>

impl<const LIMBS: usize> BitXor<&Uint<LIMBS>> for Uint<LIMBS>

impl<const LIMBS: usize> BitXor<&Wrapping<Uint<LIMBS>>> for &Wrapping<Uint<LIMBS>>

impl<const LIMBS: usize> BitXor<&Wrapping<Uint<LIMBS>>> for Wrapping<Uint<LIMBS>>

impl<const LIMBS: usize> BitXor<Uint<LIMBS>> for &Uint<LIMBS>

impl<const LIMBS: usize> BitXor<Wrapping<Uint<LIMBS>>> for &Wrapping<Uint<LIMBS>>

impl<'a> BitXor for &'a FixedBitSet

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

impl<'a, 'b, T, S> BitXor<&'b LinkedHashSet<T, S>> for &'a LinkedHashSet<T, S>
where T: Eq + Hash + Clone, S: BuildHasher + Default,

impl<T, S1, S2> BitXor<&IndexSet<T, S2>> for &IndexSet<T, S1>
where T: Eq + Hash + Clone, S1: BuildHasher + Default, S2: BuildHasher,

impl BitXor for BigInt

impl BitXor for Number

impl BitXor<&BigInt> for &BigInt

impl BitXor<&BigInt> for BigInt

impl BitXor<&Number> for &Number

impl BitXor<&Number> for Number

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

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

impl<'a, 'b, T, S> BitXor<&'b LinkedHashSet<T, S>> for &'a LinkedHashSet<T, S>
where T: Eq + Hash + Clone, S: BuildHasher + Default,

impl BitXor for Events

impl BitXor for RuleFlags

impl BitXor for AtFlags

impl BitXor for FdFlag

impl BitXor for OFlag

impl BitXor for SealFlag

impl BitXor for MntFlags

impl BitXor for MsFlags

impl BitXor for SaFlags

impl BitXor for SfdFlags

impl BitXor for Mode

impl BitXor for SFlag

impl BitXor for FsFlags

impl BitXor for BigInt

impl BitXor for BigUint

impl BitXor<&BigInt> for &BigInt

impl BitXor<&BigInt> for BigInt

impl BitXor<&BigUint> for &BigUint

impl BitXor<BigInt> for &BigInt

impl BitXor for H128

impl BitXor for H160

impl BitXor for H256

impl BitXor for H384

impl BitXor for H512

impl BitXor for H768

impl BitXor for U128

impl BitXor for U256

impl BitXor for U512

impl<'l, 'r> BitXor<&'r H128> for &'l H128

impl<'l, 'r> BitXor<&'r H160> for &'l H160

impl<'l, 'r> BitXor<&'r H256> for &'l H256

impl<'l, 'r> BitXor<&'r H384> for &'l H384

impl<'l, 'r> BitXor<&'r H512> for &'l H512

impl<'l, 'r> BitXor<&'r H768> for &'l H768

impl BitXor for ReadFlags

impl BitXor for Access

impl BitXor for AtFlags

impl BitXor for IFlags

impl BitXor for Mode

impl BitXor for OFlags

impl BitXor for SealFlags

impl BitXor for DupFlags

impl BitXor for FdFlags

impl BitXor for Roles

impl BitXor for Parity

impl<T: BitXor<Output = T>, D: Get<T>> BitXor for TypeWithDefault<T, D>

impl BitXor for Phase

impl BitXor for Choice

impl BitXor for FmtSpan

impl BitXor for B0

impl BitXor for B1

impl BitXor<B0> for B1

impl BitXor<B1> for B0

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

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

impl BitXor for &JsValue

impl BitXor for JsValue

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

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

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

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

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

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

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

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

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