Attribute Macro opimps::impl_ops_assign

source ·
#[impl_ops_assign]
Expand description

Implement assignment-based operators for both borrowed and owned objects on the right-hand side.

pub struct TestObj {
    pub val: i32
}
 
#[opimps::impl_ops_assign(std::ops::AddAssign)]
fn add_assign(self: TestObj, rhs: TestObj) {
   self.val += rhs.val;
}
 
let mut a = TestObj { val: 4 };
let b = TestObj { val: 7 };
 
a += b;
assert_eq!(11, a.val);
 
let mut a = TestObj { val: 4 };
let b = TestObj { val: 7 };
a += &b;
 
assert_eq!(11, a.val);
assert_eq!(7, b.val);