drop_guard

Crates.iodrop_guard
lib.rsdrop_guard
version0.3.0
sourcesrc
created_at2017-07-13 07:56:02.561946
updated_at2021-11-24 16:45:09.163427
descriptionThe drop_guard crate enables you to implement the Drop trait on any type. So you can run a closure on any value running out of scope.
homepage
repositoryhttps://github.com/dns2utf8/drop_guard
max_upload_size
id23195
size12,237
Stefan Schindler (dns2utf8)

documentation

https://docs.rs/drop_guard

README

drop_guard

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

A RAII that executes you function whenever the wrapped object gets dropped.

Use cases

Joining threads when they fall out of scope:

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

Examples

Feel free to run the included examples:

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

Contribute

Contributions are very welcome. Feel free to bring your own ideas or continue one of these:

  • Add example/test with panic between guard and drop
  • Add example/test with panic in guard closure
  • Add minimal rustc version

License

Licensed under either of

at your discression.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 21

cargo fmt