I'm not familiar with SystemTap, either. If I stumble upon a piece of code using `probe!`, I'd be a bit puzzled by the use of identifiers.

First, I will ask myself whether these identifiers make reference to a previously declared variable, and I'd scan the code to find them with no luck. Then, I'd wrongly assume this macro introduces a new variable or another item.

Would it be possible to use a more specific macro syntax instead of a coma-separated list of identifiers ? This would hint me that these identifiers are somewhat interpreted specially by the macro.

```rust
fn main() {
    probe!(main@foo);
    let x = 42;
    probe!(show_x@foo: x);
    let y = Some(x);
    probe!(show_y@foo: match y {
        Some(n) => n,
        None    => -1
    });
}

fn main() {
    probe!(begin@foo);
    let mut total = 0;
    for i in range(0, 100) {
        total += i;
        probe!(loop@foo: i, total);
    }
    assert_eq!(total, 4950);
    probe!(end@foo);
}
```