Macro defer_lite::defer[][src]

macro_rules! defer {
    ($($tt : tt) *) => { ... };
}
Expand description

Executes a block of code when the surrounding scope ends.

Examples

Simplest example:

use defer_lite::defer; // import the defer! macro

fn main() {
    defer! { println!("Second"); }
    println!("First");
}

Multiple statements:

use defer_lite::defer;

fn main() {
    defer! {
        println!("Second");
        println!("Third");
    }
    println!("First");
}

In Go, the defer code runs when the function exits. In this Rust implementation, however, the code runs when the surrounding scope ends – this makes it possible to use defer inside loops:

use defer_lite::defer;

fn main() {
    defer! { println!("End"); }
    println!("Before");

    for i in 0..2 {
        defer! { println!("Defer {}", i); }
        println!("Loop {}", i);
    }

    println!("After");
}