### What it does Checks for function/method calls with a mutable parameter in `debug_assert!`, `debug_assert_eq!` and `debug_assert_ne!` macros. ### Why is this bad? In release builds `debug_assert!` macros are optimized out by the compiler. Therefore mutating something in a `debug_assert!` macro results in different behavior between a release and debug build. ### Example ``` debug_assert_eq!(vec![3].pop(), Some(3)); // or debug_assert!(takes_a_mut_parameter(&mut x)); ```