A Rust implementation of Go's defer statement as the defer! macro, which executes a block of code when the surrounding scope ends.
This crate focuses on providing a lightweight, high-performance, no_std implementation of the defer! macro.
Add the dependency in your Cargo.toml:
toml
[dependencies]
defer-lite = "1.0.0"
Simplest example:
```rust use defer_lite::defer; // import the defer! macro
fn main() { defer! { println!("Second"); } println!("First"); } ```
Multiple statements:
```rust 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, the code runs when the surrounding scope ends – this makes it possible to use defer inside loops:
```rust 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");
} ```
Licensed under MIT license, see LICENSE.md for details.