Derive Macro derive_more_impl::BitAndAssign
source · #[derive(BitAndAssign)]
Available on crate feature
add_assign
only.Expand description
What #[derive(AddAssign)]
generates
This code is very similar to the code that is generated for #[derive(Add)]
.
The difference is that it mutates the existing instance instead of creating a
new one.
Tuple structs
When deriving AddAssign
for a tuple struct with two fields like this:
#[derive(AddAssign)]
struct MyInts(i32, i32);
Code like this will be generated:
impl ::core::ops::AddAssign for MyInts {
fn add_assign(&mut self, rhs: MyInts) {
self.0.add_assign(rhs.0);
self.1.add_assign(rhs.1);
}
}
The behaviour is similar with more or less fields.
Regular structs
When deriving for a regular struct with two fields like this:
#[derive(AddAssign)]
struct Point2D {
x: i32,
y: i32,
}
Code like this will be generated:
impl ::core::ops::AddAssign for Point2D {
fn add_assign(&mut self, rhs: Point2D) {
self.x.add_assign(rhs.x);
self.y.add_assign(rhs.y);
}
}
The behaviour is similar with more or less fields.
Enums
Deriving AddAssign
is not (yet) supported for enums.
This is mostly due to the fact that it is not trivial convert the Add
derivation code, because that returns a Result<EnumType>
instead of an
EnumType
.
Handling the case where it errors would be hard and maybe impossible.