#defer #go #deferred

无 std defer-lite

Go 的 defer 语句的轻量级高性能实现

1 个稳定版本

1.0.0 2021 年 8 月 10 日

#920Rust 模式

Download history 583/week @ 2024-03-13 694/week @ 2024-03-20 586/week @ 2024-03-27 384/week @ 2024-04-03 400/week @ 2024-04-10 497/week @ 2024-04-17 554/week @ 2024-04-24 339/week @ 2024-05-01 971/week @ 2024-05-08 559/week @ 2024-05-15 646/week @ 2024-05-22 520/week @ 2024-05-29 422/week @ 2024-06-05 549/week @ 2024-06-12 645/week @ 2024-06-19 462/week @ 2024-06-26

2,219 每月下载量
用于 17 个 crate(13 个直接)

MIT 许可证

6KB

defer-lite

Crates.io Docs.rs License: MIT

Go 的 defer 语句的 Rust 实现,作为 defer! 宏,在周围作用域结束时执行代码块。

此 crate 专注于提供轻量级、高性能、无 stddefer! 宏实现。

使用方法

在您的 Cargo.toml 中添加依赖项

[dependencies]
defer-lite = "1.0.0"

示例

最简单的示例

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

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

多语句

use defer_lite::defer;

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

在 Go 中,defer 代码在函数退出时运行。在此 Rust 实现中,代码在周围作用域结束时运行——这使得可以在循环中使用 defer

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

许可证

MIT 许可证 下授权,有关详细信息,请参阅 LICENSE.md

无运行时依赖