use crate::error::RecoveryCleanupState;
pub(crate) struct RecoveryCleanupGuard<'a> {
state: &'a mut RecoveryCleanupState,
}
impl<'a> RecoveryCleanupGuard<'a> {
pub(crate) fn start(state: &'a mut RecoveryCleanupState) -> Self {
*state = RecoveryCleanupState::Running;
Self { state }
}
pub(crate) fn finish(&mut self, confirmed: bool) {
*self.state = if confirmed {
RecoveryCleanupState::Completed
} else {
RecoveryCleanupState::Indeterminate
};
}
}
impl Drop for RecoveryCleanupGuard<'_> {
fn drop(&mut self) {
if *self.state == RecoveryCleanupState::Running {
*self.state = RecoveryCleanupState::Indeterminate;
}
}
}