pub enum TaskStatus {
Working,
InputRequired,
Completed,
Failed,
Cancelled,
}Expand description
Task status representing the current state of a long-running operation
§State Transitions
Valid transitions:
Working→InputRequired,Completed,Failed,CancelledInputRequired→Working,Completed,Failed,Cancelled- Terminal states (
Completed,Failed,Cancelled) → NO TRANSITIONS
§Examples
use turbomcp_protocol::types::tasks::TaskStatus;
let status = TaskStatus::Working;
assert!(!status.is_terminal());
let status = TaskStatus::Completed;
assert!(status.is_terminal());Variants§
Working
Request is currently being processed
InputRequired
Task requires additional input from requestor (e.g., user confirmation)
When in this state:
- Requestor should call
tasks/resultwhich will receive input requests - All input requests MUST include
io.modelcontextprotocol/related-taskmetadata - After providing input, task transitions back to
Working
Completed
Request completed successfully
This is a terminal state - no further transitions allowed.
Failed
Request did not complete successfully
This is a terminal state. The status_message field typically contains
diagnostic information about the failure.
Cancelled
Request was cancelled before completion
This is a terminal state. The status_message field may contain the
reason for cancellation.
Implementations§
Source§impl TaskStatus
impl TaskStatus
Sourcepub fn is_terminal(&self) -> bool
pub fn is_terminal(&self) -> bool
Check if this status is terminal (no further transitions allowed)
Terminal states: Completed, Failed, Cancelled
Sourcepub fn is_active(&self) -> bool
pub fn is_active(&self) -> bool
Check if this status indicates the task is still active
Active states: Working, InputRequired
Sourcepub fn can_transition_to(&self, _next: &TaskStatus) -> bool
pub fn can_transition_to(&self, _next: &TaskStatus) -> bool
Check if task can transition to the given status
§Examples
use turbomcp_protocol::types::tasks::TaskStatus;
let working = TaskStatus::Working;
assert!(working.can_transition_to(&TaskStatus::Completed));
assert!(working.can_transition_to(&TaskStatus::InputRequired));
let completed = TaskStatus::Completed;
assert!(!completed.can_transition_to(&TaskStatus::Working)); // TerminalTrait Implementations§
Source§impl Clone for TaskStatus
impl Clone for TaskStatus
Source§fn clone(&self) -> TaskStatus
fn clone(&self) -> TaskStatus
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TaskStatus
impl Debug for TaskStatus
Source§impl<'de> Deserialize<'de> for TaskStatus
impl<'de> Deserialize<'de> for TaskStatus
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Hash for TaskStatus
impl Hash for TaskStatus
Source§impl PartialEq for TaskStatus
impl PartialEq for TaskStatus
Source§impl Serialize for TaskStatus
impl Serialize for TaskStatus
impl Copy for TaskStatus
impl Eq for TaskStatus
impl StructuralPartialEq for TaskStatus
Auto Trait Implementations§
impl Freeze for TaskStatus
impl RefUnwindSafe for TaskStatus
impl Send for TaskStatus
impl Sync for TaskStatus
impl Unpin for TaskStatus
impl UnwindSafe for TaskStatus
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.