Final block is a block that is executed when it dropped.
It helps a user to write the deferred statements that should be executed even some statements return early.
Finally block is a block that is executed when it's dropped.
It helps a user write the deferred statements that should be executed, even when some statements return early.
function f(flag:&AtomicBool)->Option<()>{if some_condition {let _f =finally(||{
flag.store(true,Ordering::SeqCst);});some_function(flag)?;}else{another_function()?;}}