pub struct TryCatchTask { /* private fields */ }Expand description
Task that executes with error recovery.
The try_task is executed first. If it fails, the catch_task is executed instead, allowing the workflow to continue gracefully.
Implementations§
Source§impl TryCatchTask
impl TryCatchTask
Sourcepub fn new(
try_task: Box<dyn WorkflowTask>,
catch_task: Box<dyn WorkflowTask>,
) -> Self
pub fn new( try_task: Box<dyn WorkflowTask>, catch_task: Box<dyn WorkflowTask>, ) -> Self
Creates a new try-catch task.
§Arguments
try_task- Task to attemptcatch_task- Task executed on try_task failure
§Example
ⓘ
let try_task = Box::new(FunctionTask::new(
TaskId::new("risky"),
"Risky Operation".to_string(),
|_ctx| async { Ok(TaskResult::Failed("error".to_string())) }
));
let catch_task = Box::new(FunctionTask::new(
TaskId::new("recover"),
"Recovery".to_string(),
|_ctx| async { Ok(TaskResult::Success) }
));
let task = TryCatchTask::new(try_task, catch_task);Trait Implementations§
Source§impl WorkflowTask for TryCatchTask
impl WorkflowTask for TryCatchTask
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
context: &'life1 TaskContext,
) -> Pin<Box<dyn Future<Output = Result<TaskResult, TaskError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
context: &'life1 TaskContext,
) -> Pin<Box<dyn Future<Output = Result<TaskResult, TaskError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Executes the task with the provided context. Read more
Source§fn compensation(&self) -> Option<CompensationAction>
fn compensation(&self) -> Option<CompensationAction>
Returns the compensation action for this task (if any). Read more
Auto Trait Implementations§
impl Freeze for TryCatchTask
impl !RefUnwindSafe for TryCatchTask
impl Send for TryCatchTask
impl Sync for TryCatchTask
impl Unpin for TryCatchTask
impl UnsafeUnpin for TryCatchTask
impl !UnwindSafe for TryCatchTask
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more