Macro mac::inspect [] [src]

macro_rules! inspect {
    ($prefix:expr => $expr:expr) => { ... };
    ($expr:expr) => { ... };
    ($prefix:expr => $($expr:expr),+) => { ... };
    ($($expr:expr),+) => { ... };
}

Evaluates an expression, prints a stringified version of the expression along with the evaluated value, and then returns that value.

Example


fn lcm_2_to_4() -> u32 {
    let mut i = 1;
    loop {
        if inspect!(i % 2, i % 3, i % 4) == (0, 0, 0) {
            return inspect!("done: i = " => i);
        }
        i += 1;
    }
}
assert_eq!(lcm_2_to_4(), 12);

Returns 12, and prints the following to stdout:

src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (1, 1, 1)
src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (0, 2, 2)
src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (1, 0, 3)
src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (0, 1, 0)
src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (1, 2, 1)
src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (0, 0, 2)
src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (1, 1, 3)
src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (0, 2, 0)
src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (1, 0, 1)
src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (0, 1, 2)
src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (1, 2, 3)
src/inspect.rs:94 - (i % 2, i % 3, i % 4) = (0, 0, 0)
src/inspect.rs:95 - done: i = 12