[−][src]Function skellige::prelude::defer
pub fn defer<T>(f: T) -> impl Drop where
T: FnMut(),
Ensure the given closure is executed once the surrounding scope closes despite panics.
Inspired by Golang's defer
, Java's finally and Ruby's ensure
.
This provides a mechanism similar to Golang's defer
that will trigger when the
surrounding function goes out of scope.
Examples
use fungus::prelude::*; let tmpdir = PathBuf::from("tests/temp").abs().unwrap().mash("core_defer_doc"); assert!(sys::remove_all(&tmpdir).is_ok()); assert!(sys::mkdir(&tmpdir).is_ok()); // Create a scope that will trigger defer's destructor { let _defer = defer(|| sys::remove_all(&tmpdir).unwrap()); } assert_eq!(tmpdir.exists(), false);