Skip to main content

TaskLifecycle

Trait TaskLifecycle 

Source
pub trait TaskLifecycle: Send + Sync {
    // Required method
    fn validate_transition(
        &self,
        task: &Task,
        new_status: &TaskStatus,
    ) -> Result<(), PeError>;

    // Provided methods
    fn on_create(&self, _task: &Task) { ... }
    fn on_transition(&self, _task: &Task, _old_status: &TaskStatus) { ... }
    fn on_complete(&self, _task: &Task) { ... }
    fn on_fail(&self, _task: &Task, _error: &str) { ... }
    fn on_cancel(&self, _task: &Task) { ... }
}
Expand description

Lifecycle hooks for task status transitions.

Implement this trait to add custom side effects (event emission, parent auto-completion, metric tracking, etc.).

§Example

use pe_tasks::lifecycle::{TaskLifecycle, DefaultLifecycle};
use pe_tasks::{Task, TaskStatus};

let lifecycle = DefaultLifecycle;
let task = Task::new("Test");
assert!(lifecycle.validate_transition(&task, &TaskStatus::InProgress).is_ok());
assert!(lifecycle.validate_transition(&task, &TaskStatus::Completed).is_err());

Required Methods§

Source

fn validate_transition( &self, task: &Task, new_status: &TaskStatus, ) -> Result<(), PeError>

Validate whether a transition is allowed. Return Err to reject.

Provided Methods§

Source

fn on_create(&self, _task: &Task)

Called after a task is created. Default: no-op.

Source

fn on_transition(&self, _task: &Task, _old_status: &TaskStatus)

Called after a status transition succeeds. Default: no-op.

Source

fn on_complete(&self, _task: &Task)

Called after a task completes. Default: no-op.

Source

fn on_fail(&self, _task: &Task, _error: &str)

Called after a task fails. Default: no-op.

Source

fn on_cancel(&self, _task: &Task)

Called after a task is cancelled. Default: no-op.

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§