desugars operator overloading
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 68676bf..ba6dca3 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -73,6 +73,14 @@ impl Sub for Wrapping {
Shl(_) => quote!((#left).wrapping_shl(#right)),
Shr(_) => quote!((#left).wrapping_shr(#right)),
+ SubAssign(_) => quote!(#left = #left.wrapping_sub(#right)),
+ AddAssign(_) => quote!(#left = #left.wrapping_add(#right)),
+ MulAssign(_) => quote!(#left = #left.wrapping_mul(#right)),
+ DivAssign(_) => quote!(#left = #left.wrapping_div(#right)),
+ RemAssign(_) => quote!(#left = #left.wrapping_rem(#right)),
+ ShlAssign(_) => quote!(#left = #left.wrapping_shl(#right)),
+ ShrAssign(_) => quote!(#left = #left.wrapping_shr(#right)),
+
_ => quote!((#left) #op (#right)),
}
}
@@ -98,6 +106,14 @@ impl Sub for Saturating {
Shl(_) => quote!((#left).saturating_shl(#right)),
Shr(_) => quote!((#left).saturating_shr(#right)),
+ SubAssign(_) => quote!(#left = #left.saturating_sub(#right)),
+ AddAssign(_) => quote!(#left = #left.saturating_add(#right)),
+ MulAssign(_) => quote!(#left = #left.saturating_mul(#right)),
+ DivAssign(_) => quote!(#left = #left.saturating_div(#right)),
+ RemAssign(_) => quote!(#left = #left.saturating_rem(#right)),
+ ShlAssign(_) => quote!(#left = #left.saturating_shl(#right)),
+ ShrAssign(_) => quote!(#left = #left.saturating_shr(#right)),
+
_ => quote!((#left) #op (#right)),
}
}