Skip to main content

Task

Trait Task 

Source
pub trait Task: Send + 'static {
    // Required method
    fn shutdown(self) -> impl Future<Output = Result<()>> + Send;
}
Expand description

A service or resource that can be shut down gracefully.

Implement this trait for every long-running component that needs cleanup on process exit — HTTP servers, background workers, connection pools, etc. The run! macro calls Task::shutdown on each registered task in declaration order after a shutdown signal is received.

§Contract

  • Implementors must be Send + 'static so they can be moved across threads.
  • shutdown consumes self — the task cannot be used after shutdown.
  • Return Err only for genuinely unexpected failures; normal teardown should return Ok(()).

Required Methods§

Source

fn shutdown(self) -> impl Future<Output = Result<()>> + Send

Shuts down this task and releases its resources.

Called once by run! after the process receives a shutdown signal. The future must be Send because it may be awaited on any Tokio thread.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§