pub trait BitAnd<Rhs = Self> {
type Output;
// Required method
fn bitand(self, rhs: Rhs) -> Self::Output;
}Expand description
The bitwise AND operator &.
Note that Rhs is Self by default, but this is not mandatory.
§Examples
An implementation of BitAnd for a wrapper around bool.
use std::ops::BitAnd;
#[derive(Debug, PartialEq)]
struct Scalar(bool);
impl BitAnd for Scalar {
type Output = Self;
// rhs is the "right-hand side" of the expression `a & b`
fn bitand(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 of BitAnd for a wrapper around Vec<bool>.
use std::ops::BitAnd;
#[derive(Debug, PartialEq)]
struct BooleanVector(Vec<bool>);
impl BitAnd for BooleanVector {
type Output = Self;
fn bitand(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![true, false, false, 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 BitAnd for Capabilities
impl BitAnd for Capabilities
type Output = Capabilities
Source§impl BitAnd for FileSystemFlags
impl BitAnd for FileSystemFlags
type Output = FileSystemFlags
Source§impl BitAnd for FileSystemTypeFlags
impl BitAnd for FileSystemTypeFlags
type Output = FileSystemTypeFlags
Source§impl BitAnd for InotifyMask
impl BitAnd for InotifyMask
type Output = InotifyMask
Source§impl BitAnd for IptIpFlagsV4
impl BitAnd for IptIpFlagsV4
type Output = IptIpFlagsV4
Source§impl BitAnd for IptIpFlagsV6
impl BitAnd for IptIpFlagsV6
type Output = IptIpFlagsV6
Source§impl BitAnd for IptIpInverseFlags
impl BitAnd for IptIpInverseFlags
type Output = IptIpInverseFlags
Source§impl BitAnd for MountFlags
impl BitAnd for MountFlags
type Output = MountFlags
Source§impl BitAnd for MountpointFlags
impl BitAnd for MountpointFlags
type Output = MountpointFlags
Source§impl BitAnd for NfNatRangeFlags
impl BitAnd for NfNatRangeFlags
type Output = NfNatRangeFlags
Source§impl BitAnd for PersonalityFlags
impl BitAnd for PersonalityFlags
type Output = PersonalityFlags
Source§impl BitAnd for PtraceAccessMode
impl BitAnd for PtraceAccessMode
type Output = PtraceAccessMode
Source§impl BitAnd for ResolveFlags
impl BitAnd for ResolveFlags
type Output = ResolveFlags
1.74.0 (const: unstable) · Source§impl BitAnd for Saturating<i16>
impl BitAnd for Saturating<i16>
type Output = Saturating<i16>
1.74.0 (const: unstable) · Source§impl BitAnd for Saturating<i32>
impl BitAnd for Saturating<i32>
type Output = Saturating<i32>
1.74.0 (const: unstable) · Source§impl BitAnd for Saturating<i64>
impl BitAnd for Saturating<i64>
type Output = Saturating<i64>
1.74.0 (const: unstable) · Source§impl BitAnd for Saturating<i128>
impl BitAnd for Saturating<i128>
type Output = Saturating<i128>
1.74.0 (const: unstable) · Source§impl BitAnd for Saturating<isize>
impl BitAnd for Saturating<isize>
type Output = Saturating<isize>
1.74.0 (const: unstable) · Source§impl BitAnd for Saturating<u16>
impl BitAnd for Saturating<u16>
type Output = Saturating<u16>
1.74.0 (const: unstable) · Source§impl BitAnd for Saturating<u32>
impl BitAnd for Saturating<u32>
type Output = Saturating<u32>
1.74.0 (const: unstable) · Source§impl BitAnd for Saturating<u64>
impl BitAnd for Saturating<u64>
type Output = Saturating<u64>
1.74.0 (const: unstable) · Source§impl BitAnd for Saturating<u128>
impl BitAnd for Saturating<u128>
type Output = Saturating<u128>
1.74.0 (const: unstable) · Source§impl BitAnd for Saturating<usize>
impl BitAnd for Saturating<usize>
type Output = Saturating<usize>
Source§impl BitAnd for SecureBits
impl BitAnd for SecureBits
type Output = SecureBits
Source§impl BitAnd for UnmountFlags
impl BitAnd for UnmountFlags
type Output = UnmountFlags
Source§impl BitAnd for XtTcpInverseFlags
impl BitAnd for XtTcpInverseFlags
type Output = XtTcpInverseFlags
Source§impl BitAnd for XtUdpInverseFlags
impl BitAnd for XtUdpInverseFlags
type Output = XtUdpInverseFlags
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<i8>> for &Saturating<i8>
impl BitAnd<&Saturating<i8>> for &Saturating<i8>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<i8>> for Saturating<i8>
impl BitAnd<&Saturating<i8>> for Saturating<i8>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<i16>> for &Saturating<i16>
impl BitAnd<&Saturating<i16>> for &Saturating<i16>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<i16>> for Saturating<i16>
impl BitAnd<&Saturating<i16>> for Saturating<i16>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<i32>> for &Saturating<i32>
impl BitAnd<&Saturating<i32>> for &Saturating<i32>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<i32>> for Saturating<i32>
impl BitAnd<&Saturating<i32>> for Saturating<i32>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<i64>> for &Saturating<i64>
impl BitAnd<&Saturating<i64>> for &Saturating<i64>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<i64>> for Saturating<i64>
impl BitAnd<&Saturating<i64>> for Saturating<i64>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<i128>> for &Saturating<i128>
impl BitAnd<&Saturating<i128>> for &Saturating<i128>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<i128>> for Saturating<i128>
impl BitAnd<&Saturating<i128>> for Saturating<i128>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<isize>> for &Saturating<isize>
impl BitAnd<&Saturating<isize>> for &Saturating<isize>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<isize>> for Saturating<isize>
impl BitAnd<&Saturating<isize>> for Saturating<isize>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<u8>> for &Saturating<u8>
impl BitAnd<&Saturating<u8>> for &Saturating<u8>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<u8>> for Saturating<u8>
impl BitAnd<&Saturating<u8>> for Saturating<u8>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<u16>> for &Saturating<u16>
impl BitAnd<&Saturating<u16>> for &Saturating<u16>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<u16>> for Saturating<u16>
impl BitAnd<&Saturating<u16>> for Saturating<u16>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<u32>> for &Saturating<u32>
impl BitAnd<&Saturating<u32>> for &Saturating<u32>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<u32>> for Saturating<u32>
impl BitAnd<&Saturating<u32>> for Saturating<u32>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<u64>> for &Saturating<u64>
impl BitAnd<&Saturating<u64>> for &Saturating<u64>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<u64>> for Saturating<u64>
impl BitAnd<&Saturating<u64>> for Saturating<u64>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<u128>> for &Saturating<u128>
impl BitAnd<&Saturating<u128>> for &Saturating<u128>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<u128>> for Saturating<u128>
impl BitAnd<&Saturating<u128>> for Saturating<u128>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<usize>> for &Saturating<usize>
impl BitAnd<&Saturating<usize>> for &Saturating<usize>
1.74.0 (const: unstable) · Source§impl BitAnd<&Saturating<usize>> for Saturating<usize>
impl BitAnd<&Saturating<usize>> for Saturating<usize>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<i8>> for &Saturating<i8>
impl BitAnd<Saturating<i8>> for &Saturating<i8>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<i16>> for &Saturating<i16>
impl BitAnd<Saturating<i16>> for &Saturating<i16>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<i32>> for &Saturating<i32>
impl BitAnd<Saturating<i32>> for &Saturating<i32>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<i64>> for &Saturating<i64>
impl BitAnd<Saturating<i64>> for &Saturating<i64>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<i128>> for &Saturating<i128>
impl BitAnd<Saturating<i128>> for &Saturating<i128>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<isize>> for &Saturating<isize>
impl BitAnd<Saturating<isize>> for &Saturating<isize>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<u8>> for &Saturating<u8>
impl BitAnd<Saturating<u8>> for &Saturating<u8>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<u16>> for &Saturating<u16>
impl BitAnd<Saturating<u16>> for &Saturating<u16>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<u32>> for &Saturating<u32>
impl BitAnd<Saturating<u32>> for &Saturating<u32>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<u64>> for &Saturating<u64>
impl BitAnd<Saturating<u64>> for &Saturating<u64>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<u128>> for &Saturating<u128>
impl BitAnd<Saturating<u128>> for &Saturating<u128>
1.74.0 (const: unstable) · Source§impl BitAnd<Saturating<usize>> for &Saturating<usize>
impl BitAnd<Saturating<usize>> for &Saturating<usize>
Source§impl<Ul, Bl, Ur> BitAnd<Ur> for UInt<Ul, Bl>
Anding unsigned integers.
We use our PrivateAnd operator and then Trim the output.
impl<Ul, Bl, Ur> BitAnd<Ur> for UInt<Ul, Bl>
Anding unsigned integers.
We use our PrivateAnd operator and then Trim the output.