defer-lite 1.0.0

A lightweight high-performance implementation of Go's defer statement.
Documentation
# defer-lite


[![Crates.io](https://img.shields.io/crates/v/defer-lite.svg)](https://crates.io/crates/defer-lite)
[![Docs.rs](https://docs.rs/defer-lite/badge.svg)](https://docs.rs/defer-lite)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A Rust implementation of [Go's `defer` statement](https://tour.golang.org/flowcontrol/12) 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.

## Usage


Add the dependency in your `Cargo.toml`:

```toml
[dependencies]
defer-lite = "1.0.0"
```

## Examples


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");
}
```

## License


Licensed under [MIT license](https://opensource.org/licenses/MIT), see [LICENSE.md](LICENSE.md) for details.