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 LlvmBoolTensor
impl BitAnd for LlvmBoolTensor
type Output = LlvmTensor<bool>
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>
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.