Skip to main content

Task

Trait Task 

Source
pub trait Task: Send + Sync {
    // Provided methods
    fn before(&self) -> BoxFuture<'_, Result<bool, Error>> { ... }
    fn after(&self) -> BoxFuture<'_, Result<bool, Error>> { ... }
    fn priority(&self) -> u8 { ... }
}
Expand description

生命周期钩子 trait,用于在应用启动/关闭时执行自定义逻辑。

由于实例以 Arc<dyn Task> 存入全局注册表并跨线程使用,要求实现类型必须 满足 Send + Sync——把约束直接写在 trait 上,存储类型就是简洁的 Arc<dyn Task>,不必到处复述 + Send + Sync

  • before:应用启动前执行(如初始化资源),按优先级从低到高顺序调用,fail-fast
  • after:应用关闭后执行(如释放资源),按优先级从高到低顺序调用,best-effort (任一任务出错只记日志、继续执行后续清理,确保资源被尽可能释放)。
  • 返回 true 表示该钩子实际执行了操作,会记录耗时日志;返回 false 则静默跳过。

Provided Methods§

Source

fn before(&self) -> BoxFuture<'_, Result<bool, Error>>

应用启动前的钩子,默认不执行任何操作。

Source

fn after(&self) -> BoxFuture<'_, Result<bool, Error>>

应用关闭后的钩子,默认不执行任何操作。

Source

fn priority(&self) -> u8

执行优先级,数值越小优先级越高(before 阶段),after 阶段反之。默认为 0。

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§