🦀 Rust - Destructor / Finally
Destructor / Finally
Updated at 2024-02-24 04:23
Rust doesn't have an official destructor or finally keyword, but it does have the Drop trait. The Drop trait is used to run code when a value goes out of scope.
Useful, but don't rely on it too much, like any
finallyblock.
It is not guaranteed that the Drop will run.
- if a panicking thread panics again; e.g., in another destructor
- if running in
-C panic=abortmode, no unwinding is done - out of memory error leading to abort
- infinite loop exited with an abort
- power failure, etc.
struct FooFinally;
impl Drop for FooFinally {
fn drop(&mut self) {
println!("ah, finally!");
}
}
fn bar() -> Result<(), ()> {
let _finally = FooFinally;
baz()?;
Ok(())
}