pub struct Exit { /* private fields */ }Expand description
Graceful shutdown coordinator for ensuring data consistency during program exit.
Uses a read-write lock to coordinate between operations and shutdown signals (e.g., Ctrl-C). Operations hold read locks during critical sections, preventing shutdown until they complete. Registered rollbacks will be ran on exit.
Implementations§
Source§impl Exit
impl Exit
pub fn new() -> Exit
Sourcepub fn register_cleanup<F>(&self, callback: F)
pub fn register_cleanup<F>(&self, callback: F)
Registers a callback to be executed during shutdown. Callbacks are executed in registration order before the program exits.
Sourcepub fn set_ctrlc_handler(&self)
pub fn set_ctrlc_handler(&self)
Sets the Ctrl-C signal handler for graceful shutdown.
§Panics
Only one Ctrl-C handler can be registered per process. This will panic if:
- Called multiple times
- Another crate has already registered a Ctrl-C handler
Sourcepub fn lock(&self) -> RwLockReadGuard<'_, RawRwLock, ()>
pub fn lock(&self) -> RwLockReadGuard<'_, RawRwLock, ()>
Acquires a read lock to protect a critical section from shutdown. The shutdown handler will wait for all locks to be released.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Exit
impl !RefUnwindSafe for Exit
impl Send for Exit
impl Sync for Exit
impl Unpin for Exit
impl !UnwindSafe for Exit
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more