fparkan/vendor/scopeguard/examples/readme.rs
Valentin Popov 1b6a04ca55
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
2024-01-08 01:21:28 +04:00

30 lines
506 B
Rust

#[macro_use(defer)]
extern crate scopeguard;
use scopeguard::guard;
fn f() {
defer! {
println!("Called at return or panic");
}
panic!();
}
use std::fs::File;
use std::io::Write;
fn g() {
let f = File::create("newfile.txt").unwrap();
let mut file = guard(f, |f| {
// write file at return or panic
let _ = f.sync_all();
});
// access the file through the scope guard itself
file.write_all(b"test me\n").unwrap();
}
fn main() {
f();
g();
}