diff options
Diffstat (limited to 'development/tools/cargo-workspace2/src/cargo/error.rs')
-rw-r--r-- | development/tools/cargo-workspace2/src/cargo/error.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/development/tools/cargo-workspace2/src/cargo/error.rs b/development/tools/cargo-workspace2/src/cargo/error.rs new file mode 100644 index 000000000000..cf4b7e3d1671 --- /dev/null +++ b/development/tools/cargo-workspace2/src/cargo/error.rs @@ -0,0 +1,42 @@ +use std::{fmt, io}; +use toml_edit::TomlError; + +/// Errors occured while interacting with Cargo.toml files +#[derive(Debug)] +pub enum CargoError { + /// Failed to read or write a file + Io, + /// Error parsing Cargo.toml file + Parsing, + /// Provided Cargo.toml was no workspace + NoWorkspace, + /// Provided Cargo.toml had no dependencies + NoDependencies, +} + +impl fmt::Display for CargoError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!( + f, + "{}", + match self { + Self::Io => "General I/O error", + Self::Parsing => "Parsing error", + Self::NoWorkspace => "Selected crate root is not a workspace!", + Self::NoDependencies => "No dependencies found!", + } + ) + } +} + +impl From<io::Error> for CargoError { + fn from(_: io::Error) -> Self { + Self::Io + } +} + +impl From<TomlError> for CargoError { + fn from(_: TomlError) -> Self { + Self::Parsing + } +} |