#closures #container #lambda #callback #type-system

drop_guard

drop_guard 包允许你在任何类型上实现 Drop 特性。因此,你可以对超出作用域的任何值运行闭包。

7 个不稳定版本

0.3.0 2021年11月24日
0.2.1 2017年9月23日
0.1.0 2017年9月1日
0.0.2 2017年8月8日
0.0.1 2017年7月13日

#867Rust 模式

Download history 2570/week @ 2024-03-13 2385/week @ 2024-03-20 1892/week @ 2024-03-27 3496/week @ 2024-04-03 1935/week @ 2024-04-10 2517/week @ 2024-04-17 3400/week @ 2024-04-24 1404/week @ 2024-05-01 1411/week @ 2024-05-08 2123/week @ 2024-05-15 1434/week @ 2024-05-22 2263/week @ 2024-05-29 2313/week @ 2024-06-05 1653/week @ 2024-06-12 1462/week @ 2024-06-19 669/week @ 2024-06-26

6,543 每月下载量
用于 3 crates

MIT/Apache

9KB
86

drop_guard

crates.io doc.rs Build Status travis Build status appveyor

RAII,在包装对象被丢弃时执行你的函数。

用例

线程超出作用域时连接线程

extern crate drop_guard;

use drop_guard::DropGuard;

use std::thread::{spawn, sleep};
use std::time::guard;

fn main() {
    let _ = guard(spawn(move || {
                            sleep(Duration::from_secs(2));
                            println!("println! from thread");
                        })
                        , |join_handle| join_handle.join().unwrap());
    
    println!("Waiting for thread ...");
}

示例

请随意运行包含的示例

cargo run --example drop
cargo run --example rainbow
cargo run --example thread
cargo run --example threadpool

贡献

欢迎贡献。请随意提出自己的想法或继续以下之一

  • 添加 guard 和 drop 之间引发 panic 的示例/测试
  • 在 guard 闭包中添加引发 panic 的示例/测试
  • 添加最小 rustc 版本

许可证

许可如下之一

由你决定。

贡献

除非你明确声明,否则任何提交给工作内容并由你有意提交的贡献,根据 Apache-2.0 许可证定义,应作为上述双重许可,不附加任何额外条款或条件。

无运行时依赖