pub enum TaskMonitorError {
ConfigParse(String),
CircularDependency(String),
DependencyNotFound {
dependency_task_name: String,
task_name: String,
},
ControlError(ControlCommandError),
}
Expand description
Main error type for task monitoring operations.
Covers various error conditions that can occur during task monitoring setup and execution, including configuration parsing, dependency validation, and runtime communication errors.
§Examples
§Handling Circular Dependencies
ⓘ
use std::collections::HashMap;
use tcrm_monitor::monitor::{TaskMonitor, config::TaskSpec, error::TaskMonitorError};
use tcrm_task::tasks::config::TaskConfig;
let mut tasks = HashMap::new();
tasks.insert(
"a".to_string(),
TaskSpec::new(TaskConfig::new("echo").args(["a"]))
.dependencies(["b"])
);
tasks.insert(
"b".to_string(),
TaskSpec::new(TaskConfig::new("echo").args(["b"]))
.dependencies(["a"])
);
match TaskMonitor::new(tasks) {
Err(TaskMonitorError::CircularDependency(task)) => {
println!("Circular dependency involving: {}", task);
panic!("Expected circular dependency error");
}
_ => panic!("Expected error"),
}
§Handling Missing Dependencies
ⓘ
use std::collections::HashMap;
use tcrm_monitor::monitor::{TaskMonitor, config::TaskSpec, error::TaskMonitorError};
use tcrm_task::tasks::config::TaskConfig;
let mut tasks = HashMap::new();
tasks.insert(
"build".to_string(),
TaskSpec::new(TaskConfig::new("cargo").args(["build"]))
.dependencies(["nonexistent"])
);
match TaskMonitor::new(tasks) {
Err(TaskMonitorError::DependencyNotFound { task_name, dependency_task_name }) => {
println!("Task '{}' depends on missing task '{}'", task_name, dependency_task_name);
panic!("Expected missing dependency error");
}
_ => panic!("Expected error"),
}
Variants§
ConfigParse(String)
Configuration parsing failed.
This error occurs when task configuration cannot be parsed or contains invalid values.
§Examples
use tcrm_monitor::monitor::error::TaskMonitorError;
let error = TaskMonitorError::ConfigParse("Invalid timeout value".to_string());
assert!(error.to_string().contains("Config parse error"));
CircularDependency(String)
A circular dependency was detected in the task graph.
Contains the name of a task involved in the circular dependency.
§Examples
use tcrm_monitor::monitor::error::TaskMonitorError;
let error = TaskMonitorError::CircularDependency("task_a".to_string());
assert!(error.to_string().contains("Circular dependency"));
DependencyNotFound
A task depends on another task that doesn’t exist.
This error is returned during task graph validation when a dependency is specified that doesn’t correspond to any defined task.
§Examples
use tcrm_monitor::monitor::error::TaskMonitorError;
let error = TaskMonitorError::DependencyNotFound {
task_name: "build".to_string(),
dependency_task_name: "nonexistent".to_string()
};
assert!(error.to_string().contains("not found"));
Fields
ControlError(ControlCommandError)
Trait Implementations§
Source§impl Clone for TaskMonitorError
impl Clone for TaskMonitorError
Source§fn clone(&self) -> TaskMonitorError
fn clone(&self) -> TaskMonitorError
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for TaskMonitorError
impl Debug for TaskMonitorError
Source§impl Display for TaskMonitorError
impl Display for TaskMonitorError
Source§impl Error for TaskMonitorError
impl Error for TaskMonitorError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Source§impl PartialEq for TaskMonitorError
impl PartialEq for TaskMonitorError
impl StructuralPartialEq for TaskMonitorError
Auto Trait Implementations§
impl Freeze for TaskMonitorError
impl RefUnwindSafe for TaskMonitorError
impl Send for TaskMonitorError
impl Sync for TaskMonitorError
impl Unpin for TaskMonitorError
impl UnwindSafe for TaskMonitorError
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