# assert-not-modified Rust macro which, given a variable and a block of code, executes the block of code and checks that the variable has not changed. For instance, this can check that a function does not have side effects. The given variable must implement Clone and Debug. ### Panics Panics if data is modified with the message "Data was modified where it should not have been". ### Example ```rust #[macro_use] extern crate assert_not_modified; // This function returns Err but modifies x anyway. This is misleading. fn modify_x_or_err(x: &mut i32) -> Result<(), String> { *x = *x + 1; Err("Something wrong happened !".to_owned()) } // This test will expose the lying function : assert!(std::panic::catch_unwind(|| { let mut x = 3; assert_not_modified!(x, modify_x_or_err(&mut x)); // Panics }) .is_err()); ```