Skip to main content

TimeoutGuard

Struct TimeoutGuard 

Source
pub struct TimeoutGuard<C = SystemTimeoutClock> { /* private fields */ }
Expand description

Deterministic timeout guard wrapper with enforcement.

The TimeoutGuard extends TimeoutClassifier with active timeout enforcement via cancellation signaling when a timeout occurs.

Implementations§

Source§

impl TimeoutGuard<SystemTimeoutClock>

Source

pub fn new() -> Self

Creates a timeout guard using the default system clock.

Source§

impl<C> TimeoutGuard<C>
where C: TimeoutClock,

Source

pub fn with_clock(clock: C) -> Self

Creates a timeout guard with an explicit clock implementation.

Source

pub fn with_poll_interval(self, interval: Duration) -> Self

Sets the watchdog poll interval. Default is 1ms.

Source

pub fn execute<T, F>( &self, timeout_secs: Option<u64>, operation: F, ) -> GuardedExecution<T>
where F: FnOnce() -> T,

Executes operation, captures elapsed time, and classifies timeout outcome.

The timeout decision is deterministic for a given (timeout_secs, elapsed). This method is provided for backward compatibility; use TimeoutClassifier::execute_and_classify when only classification is needed without any enforcement semantics.

Source

pub fn execute_with_cancellation<T, F>( &self, timeout_secs: Option<u64>, operation: F, ) -> CancellableExecution<T>
where F: FnOnce(&CancellationContext) -> T,

Executes operation with cancellation support, capturing elapsed time and classifying timeout.

When a timeout is configured, this method starts an attempt-local watchdog worker. The watchdog sleeps until the timeout deadline and requests cancellation if the operation has not completed yet. The watchdog is deterministically joined before returning from this method.

Timeout classification remains inspectable output, but enforcement does not depend on post-return classification. Enforcement (cancellation request) can happen during active handler execution.

Cleanup invariant: watchdog lifecycle is panic-safe and always joined via scoped lifecycle teardown before return or unwind propagation.

Source

pub fn execute_with_external_cancellation<T, F>( &self, timeout_secs: Option<u64>, cancellation_context: CancellationContext, operation: F, ) -> CancellableExecution<T>
where F: FnOnce(&CancellationContext) -> T,

Executes operation with an externally-provided cancellation context.

Identical to execute_with_cancellation except the caller supplies the CancellationContext. This allows the dispatch loop to retain a clone of the context so it can signal cancellation (e.g. budget exhaustion) while the handler is running.

Trait Implementations§

Source§

impl<C: Clone> Clone for TimeoutGuard<C>

Source§

fn clone(&self) -> TimeoutGuard<C>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<C: Debug> Debug for TimeoutGuard<C>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for TimeoutGuard<SystemTimeoutClock>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<C> Freeze for TimeoutGuard<C>
where C: Freeze,

§

impl<C> RefUnwindSafe for TimeoutGuard<C>
where C: RefUnwindSafe,

§

impl<C> Send for TimeoutGuard<C>
where C: Send,

§

impl<C> Sync for TimeoutGuard<C>
where C: Sync,

§

impl<C> Unpin for TimeoutGuard<C>
where C: Unpin,

§

impl<C> UnsafeUnpin for TimeoutGuard<C>
where C: UnsafeUnpin,

§

impl<C> UnwindSafe for TimeoutGuard<C>
where C: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.