#defer #sync #async #go #counter #synchronous #context

rdefer

一个 Rust 包,提供在同步和异步环境中类似 Go 的 defer 功能。

1 个稳定版本

1.0.0 2023年6月2日

#15 in #defer

MIT 许可证

6KB
63 行代码(不包括注释)

rdefer

一个 Rust 包,为同步和异步代码提供 defer 功能。

用法

同步 defer

use rdefer::defer;

let _d = defer!({
    println!("This will be printed last");
});
println!("This will be printed first");

异步 defer(功能受限制)

此功能位于异步功能标志之后。

要使用此功能,请将 rdefer 添加到您的 Cargo.toml 中,并启用异步功能

[dependencies]
rdefer = { version = "*", features = ["async"] }

然后您可以按以下方式使用它

use rdefer::{async_defer, exec_before_defer};
use std::sync::Arc;

let defer = async_defer!(2, async {
    println!("This will be printed last");
});

exec_before_defer!(defer, || println!("This will be printed first"));
exec_before_defer!(defer, || println!("This will be printed second"));

lib.rs:

一个 Rust 包,为同步和异步代码提供 defer 功能。

此包提供类似于 Go 的 defer 语句的 defer 功能。此外,它还允许异步 defer。这是通过使用在每次执行 defer 时递减的计数器来实现的。当计数器达到 0 时,执行提供的函数。

依赖

~0–6MB
~21K SLoC