once::assert_has_not_been_called! [] [src]

macro_rules! assert_has_not_been_called {
    () => { ... };
    ($($arg:tt)+) => { ... };
}

This macro can be used to ensure that a function is called only once. It panics if the function is called a second time.

Example

Using the macro:

#[macro_use]
extern crate once;

fn init() {
    assert_has_not_been_called!();

    // code that should only run once
}

fn main() {
    init();
    // init(); // "assertion failed: called == false"
}

Custom error message:

#[macro_use]
extern crate once;

fn init() {
    assert_has_not_been_called!("the init function must only be called {}", "once");
}

fn main() {
    init();
    // init(); // "the init function must only be called once"
}