pub trait BitXor<Rhs = Self> { typeOutput; // Required method fnbitxor(self, rhs: Rhs) -> Self::Output;}Expand description
The bitwise XOR operator^.
Note thatRhs isSelf by default, but this is not mandatory.
§Examples
An implementation ofBitXor that lifts^ to a wrapper aroundbool.
usestd::ops::BitXor;#[derive(Debug, PartialEq)]structScalar(bool);implBitXorforScalar {typeOutput =Self;// rhs is the "right-hand side" of the expression `a ^ b`fnbitxor(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 ofBitXor trait for a wrapper aroundVec<bool>.
usestd::ops::BitXor;#[derive(Debug, PartialEq)]structBooleanVector(Vec<bool>);implBitXorforBooleanVector {typeOutput =Self;fnbitxor(self,Self(rhs):Self) ->Self::Output {letSelf(lhs) =self;assert_eq!(lhs.len(), rhs.len());Self( lhs.iter() .zip(rhs.iter()) .map(|(x, y)|*x ^*y) .collect() ) }}letbv1 = BooleanVector(vec![true,true,false,false]);letbv2 = BooleanVector(vec![true,false,true,false]);letexpected = BooleanVector(vec![false,true,true,false]);assert_eq!(bv1 ^ bv2, expected);