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 for CargoError { fn from(_: io::Error) -> Self { Self::Io } } impl From for CargoError { fn from(_: TomlError) -> Self { Self::Parsing } }