pub trait BitAnd<Rhs = Self> { typeOutput; // Required method fnbitand(self, rhs: Rhs) -> Self::Output;}Expand description
The bitwise AND operator&.
Note thatRhs isSelf by default, but this is not mandatory.
§Examples
An implementation ofBitAnd for a wrapper aroundbool.
usestd::ops::BitAnd;#[derive(Debug, PartialEq)]structScalar(bool);implBitAndforScalar {typeOutput =Self;// rhs is the "right-hand side" of the expression `a & b`fnbitand(self, rhs:Self) ->Self::Output {Self(self.0& rhs.0) }}assert_eq!(Scalar(true) & Scalar(true), Scalar(true));assert_eq!(Scalar(true) & Scalar(false), Scalar(false));assert_eq!(Scalar(false) & Scalar(true), Scalar(false));assert_eq!(Scalar(false) & Scalar(false), Scalar(false));An implementation ofBitAnd for a wrapper aroundVec<bool>.
usestd::ops::BitAnd;#[derive(Debug, PartialEq)]structBooleanVector(Vec<bool>);implBitAndforBooleanVector {typeOutput =Self;fnbitand(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![true,false,false,false]);assert_eq!(bv1 & bv2, expected);