chore(defer.rs): Prepare for depot merge

This commit is contained in:
Vincent Ambo 2019-12-21 00:53:28 +00:00
parent 6193726fb7
commit 426780060d
6 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,31 @@
// Go's defer in Rust!
struct Defer<F: Fn()> {
f: F
}
impl <F: Fn()> Drop for Defer<F> {
fn drop(&mut self) {
(self.f)()
}
}
// Only added this for Go-syntax familiarity ;-)
fn defer<F: Fn()>(f: F) -> Defer<F> {
Defer { f }
}
fn main() {
let mut i = 1;
// Calling it "token" ... could be something else. The lifetime of this
// controls when the action is run.
let _token = defer(move || println!("Value is: {}", i));
i += 1;
println!("Value is: {}", i);
}
// Prints:
// Value is: 2
// Value is: 1