#![feature(plugin)] #![plugin(clippy)] #[allow(unused_assignments)] #[warn(misrefactored_assign_op)] fn main() { let mut a = 5; a += a + 1; a += 1 + a; a -= a - 1; a *= a * 99; a *= 42 * a; a /= a / 2; a %= a % 5; a &= a & 1; a -= 1 - a; a /= 5 / a; a %= 42 % a; a <<= 6 << a; } // check that we don't lint on op assign impls, because that's just the way to impl them use std::ops::{Mul, MulAssign}; #[derive(Copy, Clone, Debug, PartialEq)] pub struct Wrap(i64); impl Mul for Wrap { type Output = Self; fn mul(self, rhs: i64) -> Self { Wrap(self.0 * rhs) } } impl MulAssign for Wrap { fn mul_assign(&mut self, rhs: i64) { *self = *self * rhs } }