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§
Sourcefn validate_transition(
&self,
task: &Task,
new_status: &TaskStatus,
) -> Result<(), PeError>
fn validate_transition( &self, task: &Task, new_status: &TaskStatus, ) -> Result<(), PeError>
Validate whether a transition is allowed. Return Err to reject.
Provided Methods§
Sourcefn on_transition(&self, _task: &Task, _old_status: &TaskStatus)
fn on_transition(&self, _task: &Task, _old_status: &TaskStatus)
Called after a status transition succeeds. Default: no-op.
Sourcefn on_complete(&self, _task: &Task)
fn on_complete(&self, _task: &Task)
Called after a task completes. Default: no-op.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".