18 lines
No EOL
480 B
Text
18 lines
No EOL
480 B
Text
### 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));
|
|
``` |