7 unstable releases
0.3.0 | Nov 24, 2021 |
---|---|
0.2.1 | Sep 23, 2017 |
0.1.0 | Sep 1, 2017 |
0.0.2 | Aug 8, 2017 |
0.0.1 | Jul 13, 2017 |
#807 in Rust patterns
6,453 downloads per month
Used in 4 crates
9KB
86 lines
drop_guard
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
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.