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§
Required Methods§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementors§
Source§impl BitXor for PackedNull
impl BitXor for PackedNull
type Output = PackedNull
1.74.0 (const: unstable) · Source§impl BitXor for Saturating<i16>
impl BitXor for Saturating<i16>
type Output = Saturating<i16>
1.74.0 (const: unstable) · Source§impl BitXor for Saturating<i32>
impl BitXor for Saturating<i32>
type Output = Saturating<i32>
1.74.0 (const: unstable) · Source§impl BitXor for Saturating<i64>
impl BitXor for Saturating<i64>
type Output = Saturating<i64>
1.74.0 (const: unstable) · Source§impl BitXor for Saturating<i128>
impl BitXor for Saturating<i128>
type Output = Saturating<i128>
1.74.0 (const: unstable) · Source§impl BitXor for Saturating<isize>
impl BitXor for Saturating<isize>
type Output = Saturating<isize>
1.74.0 (const: unstable) · Source§impl BitXor for Saturating<u16>
impl BitXor for Saturating<u16>
type Output = Saturating<u16>
1.74.0 (const: unstable) · Source§impl BitXor for Saturating<u32>
impl BitXor for Saturating<u32>
type Output = Saturating<u32>
1.74.0 (const: unstable) · Source§impl BitXor for Saturating<u64>
impl BitXor for Saturating<u64>
type Output = Saturating<u64>
1.74.0 (const: unstable) · Source§impl BitXor for Saturating<u128>
impl BitXor for Saturating<u128>
type Output = Saturating<u128>
1.74.0 (const: unstable) · Source§impl BitXor for Saturating<usize>
impl BitXor for Saturating<usize>
type Output = Saturating<usize>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<i8>> for &Saturating<i8>
impl BitXor<&Saturating<i8>> for &Saturating<i8>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<i8>> for Saturating<i8>
impl BitXor<&Saturating<i8>> for Saturating<i8>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<i16>> for &Saturating<i16>
impl BitXor<&Saturating<i16>> for &Saturating<i16>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<i16>> for Saturating<i16>
impl BitXor<&Saturating<i16>> for Saturating<i16>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<i32>> for &Saturating<i32>
impl BitXor<&Saturating<i32>> for &Saturating<i32>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<i32>> for Saturating<i32>
impl BitXor<&Saturating<i32>> for Saturating<i32>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<i64>> for &Saturating<i64>
impl BitXor<&Saturating<i64>> for &Saturating<i64>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<i64>> for Saturating<i64>
impl BitXor<&Saturating<i64>> for Saturating<i64>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<i128>> for &Saturating<i128>
impl BitXor<&Saturating<i128>> for &Saturating<i128>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<i128>> for Saturating<i128>
impl BitXor<&Saturating<i128>> for Saturating<i128>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<isize>> for &Saturating<isize>
impl BitXor<&Saturating<isize>> for &Saturating<isize>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<isize>> for Saturating<isize>
impl BitXor<&Saturating<isize>> for Saturating<isize>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<u8>> for &Saturating<u8>
impl BitXor<&Saturating<u8>> for &Saturating<u8>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<u8>> for Saturating<u8>
impl BitXor<&Saturating<u8>> for Saturating<u8>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<u16>> for &Saturating<u16>
impl BitXor<&Saturating<u16>> for &Saturating<u16>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<u16>> for Saturating<u16>
impl BitXor<&Saturating<u16>> for Saturating<u16>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<u32>> for &Saturating<u32>
impl BitXor<&Saturating<u32>> for &Saturating<u32>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<u32>> for Saturating<u32>
impl BitXor<&Saturating<u32>> for Saturating<u32>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<u64>> for &Saturating<u64>
impl BitXor<&Saturating<u64>> for &Saturating<u64>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<u64>> for Saturating<u64>
impl BitXor<&Saturating<u64>> for Saturating<u64>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<u128>> for &Saturating<u128>
impl BitXor<&Saturating<u128>> for &Saturating<u128>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<u128>> for Saturating<u128>
impl BitXor<&Saturating<u128>> for Saturating<u128>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<usize>> for &Saturating<usize>
impl BitXor<&Saturating<usize>> for &Saturating<usize>
1.74.0 (const: unstable) · Source§impl BitXor<&Saturating<usize>> for Saturating<usize>
impl BitXor<&Saturating<usize>> for Saturating<usize>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<i16>> for &core::num::wrapping::Wrapping<i16>
impl BitXor<&Wrapping<i16>> for &core::num::wrapping::Wrapping<i16>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<i16>> for core::num::wrapping::Wrapping<i16>
impl BitXor<&Wrapping<i16>> for core::num::wrapping::Wrapping<i16>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<i32>> for &core::num::wrapping::Wrapping<i32>
impl BitXor<&Wrapping<i32>> for &core::num::wrapping::Wrapping<i32>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<i32>> for core::num::wrapping::Wrapping<i32>
impl BitXor<&Wrapping<i32>> for core::num::wrapping::Wrapping<i32>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<i64>> for &core::num::wrapping::Wrapping<i64>
impl BitXor<&Wrapping<i64>> for &core::num::wrapping::Wrapping<i64>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<i64>> for core::num::wrapping::Wrapping<i64>
impl BitXor<&Wrapping<i64>> for core::num::wrapping::Wrapping<i64>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<i128>> for &core::num::wrapping::Wrapping<i128>
impl BitXor<&Wrapping<i128>> for &core::num::wrapping::Wrapping<i128>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<i128>> for core::num::wrapping::Wrapping<i128>
impl BitXor<&Wrapping<i128>> for core::num::wrapping::Wrapping<i128>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<isize>> for &core::num::wrapping::Wrapping<isize>
impl BitXor<&Wrapping<isize>> for &core::num::wrapping::Wrapping<isize>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<isize>> for core::num::wrapping::Wrapping<isize>
impl BitXor<&Wrapping<isize>> for core::num::wrapping::Wrapping<isize>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<u16>> for &core::num::wrapping::Wrapping<u16>
impl BitXor<&Wrapping<u16>> for &core::num::wrapping::Wrapping<u16>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<u16>> for core::num::wrapping::Wrapping<u16>
impl BitXor<&Wrapping<u16>> for core::num::wrapping::Wrapping<u16>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<u32>> for &core::num::wrapping::Wrapping<u32>
impl BitXor<&Wrapping<u32>> for &core::num::wrapping::Wrapping<u32>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<u32>> for core::num::wrapping::Wrapping<u32>
impl BitXor<&Wrapping<u32>> for core::num::wrapping::Wrapping<u32>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<u64>> for &core::num::wrapping::Wrapping<u64>
impl BitXor<&Wrapping<u64>> for &core::num::wrapping::Wrapping<u64>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<u64>> for core::num::wrapping::Wrapping<u64>
impl BitXor<&Wrapping<u64>> for core::num::wrapping::Wrapping<u64>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<u128>> for &core::num::wrapping::Wrapping<u128>
impl BitXor<&Wrapping<u128>> for &core::num::wrapping::Wrapping<u128>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<u128>> for core::num::wrapping::Wrapping<u128>
impl BitXor<&Wrapping<u128>> for core::num::wrapping::Wrapping<u128>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<usize>> for &core::num::wrapping::Wrapping<usize>
impl BitXor<&Wrapping<usize>> for &core::num::wrapping::Wrapping<usize>
1.14.0 (const: unstable) · Source§impl BitXor<&Wrapping<usize>> for core::num::wrapping::Wrapping<usize>
impl BitXor<&Wrapping<usize>> for core::num::wrapping::Wrapping<usize>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<i8>> for &Saturating<i8>
impl BitXor<Saturating<i8>> for &Saturating<i8>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<i16>> for &Saturating<i16>
impl BitXor<Saturating<i16>> for &Saturating<i16>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<i32>> for &Saturating<i32>
impl BitXor<Saturating<i32>> for &Saturating<i32>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<i64>> for &Saturating<i64>
impl BitXor<Saturating<i64>> for &Saturating<i64>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<i128>> for &Saturating<i128>
impl BitXor<Saturating<i128>> for &Saturating<i128>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<isize>> for &Saturating<isize>
impl BitXor<Saturating<isize>> for &Saturating<isize>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<u8>> for &Saturating<u8>
impl BitXor<Saturating<u8>> for &Saturating<u8>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<u16>> for &Saturating<u16>
impl BitXor<Saturating<u16>> for &Saturating<u16>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<u32>> for &Saturating<u32>
impl BitXor<Saturating<u32>> for &Saturating<u32>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<u64>> for &Saturating<u64>
impl BitXor<Saturating<u64>> for &Saturating<u64>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<u128>> for &Saturating<u128>
impl BitXor<Saturating<u128>> for &Saturating<u128>
1.74.0 (const: unstable) · Source§impl BitXor<Saturating<usize>> for &Saturating<usize>
impl BitXor<Saturating<usize>> for &Saturating<usize>
1.14.0 (const: unstable) · Source§impl BitXor<Wrapping<i16>> for &core::num::wrapping::Wrapping<i16>
impl BitXor<Wrapping<i16>> for &core::num::wrapping::Wrapping<i16>
1.14.0 (const: unstable) · Source§impl BitXor<Wrapping<i32>> for &core::num::wrapping::Wrapping<i32>
impl BitXor<Wrapping<i32>> for &core::num::wrapping::Wrapping<i32>
1.14.0 (const: unstable) · Source§impl BitXor<Wrapping<i64>> for &core::num::wrapping::Wrapping<i64>
impl BitXor<Wrapping<i64>> for &core::num::wrapping::Wrapping<i64>
1.14.0 (const: unstable) · Source§impl BitXor<Wrapping<i128>> for &core::num::wrapping::Wrapping<i128>
impl BitXor<Wrapping<i128>> for &core::num::wrapping::Wrapping<i128>
1.14.0 (const: unstable) · Source§impl BitXor<Wrapping<isize>> for &core::num::wrapping::Wrapping<isize>
impl BitXor<Wrapping<isize>> for &core::num::wrapping::Wrapping<isize>
1.14.0 (const: unstable) · Source§impl BitXor<Wrapping<u16>> for &core::num::wrapping::Wrapping<u16>
impl BitXor<Wrapping<u16>> for &core::num::wrapping::Wrapping<u16>
1.14.0 (const: unstable) · Source§impl BitXor<Wrapping<u32>> for &core::num::wrapping::Wrapping<u32>
impl BitXor<Wrapping<u32>> for &core::num::wrapping::Wrapping<u32>
1.14.0 (const: unstable) · Source§impl BitXor<Wrapping<u64>> for &core::num::wrapping::Wrapping<u64>
impl BitXor<Wrapping<u64>> for &core::num::wrapping::Wrapping<u64>
1.14.0 (const: unstable) · Source§impl BitXor<Wrapping<u128>> for &core::num::wrapping::Wrapping<u128>
impl BitXor<Wrapping<u128>> for &core::num::wrapping::Wrapping<u128>
1.14.0 (const: unstable) · Source§impl BitXor<Wrapping<usize>> for &core::num::wrapping::Wrapping<usize>
impl BitXor<Wrapping<usize>> for &core::num::wrapping::Wrapping<usize>
Source§impl<E, I> BitXor for Integer<E, I>where
E: Environment,
I: IntegerType,
impl<E, I> BitXor for Integer<E, I>where
E: Environment,
I: IntegerType,
Source§impl<E, I> BitXor<&Integer<E, I>> for Integer<E, I>where
E: Environment,
I: IntegerType,
impl<E, I> BitXor<&Integer<E, I>> for Integer<E, I>where
E: Environment,
I: IntegerType,
Source§impl<Ul, Bl, Ur> BitXor<Ur> for UInt<Ul, Bl>
Xoring unsigned integers.
We use our PrivateXor operator and then Trim the output.
impl<Ul, Bl, Ur> BitXor<Ur> for UInt<Ul, Bl>
Xoring unsigned integers.
We use our PrivateXor operator and then Trim the output.