aboutsummaryrefslogtreecommitdiff
path: root/development/tools/cargo-workspace2/src/cargo/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'development/tools/cargo-workspace2/src/cargo/error.rs')
-rw-r--r--development/tools/cargo-workspace2/src/cargo/error.rs42
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
+ }
+}