#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::ops::BitAndAssign; #[derive(Debug, PartialEq)] struct BooleanVector(Vec); impl BitAndAssign for BooleanVector { fn bitand_assign(&mut self, rhs: Self) { assert_eq!(self.0.len(), rhs.0.len()); *self = Self(self.0.iter().zip(rhs.0.iter()).map(|(x, y)| *x & *y).collect()); } } fn main() { let mut bv = BooleanVector(vec![true, true, false, false]); bv &= BooleanVector(vec![true, false, true, false]); let expected = BooleanVector(vec![true, false, false, false]); assert_eq!(bv, expected); }