2016-01-12 17:51:13 +00:00
|
|
|
use std::error::Error;
|
|
|
|
use std::fmt::Error as FmtError;
|
2016-05-15 14:40:06 +00:00
|
|
|
use std::fmt::{Display, Formatter};
|
2016-01-23 16:30:01 +00:00
|
|
|
use std::convert::From;
|
2016-01-12 17:51:13 +00:00
|
|
|
|
2016-05-15 14:40:06 +00:00
|
|
|
generate_error_types!(StoreError, StoreErrorKind,
|
|
|
|
ConfigurationError => "Store Configuration Error",
|
|
|
|
FileError => "File Error",
|
|
|
|
IoError => "IO Error",
|
|
|
|
IdLocked => "ID locked",
|
|
|
|
IdNotFound => "ID not found",
|
|
|
|
OutOfMemory => "Out of Memory",
|
|
|
|
FileNotFound => "File corresponding to ID not found",
|
|
|
|
FileNotCreated => "File corresponding to ID could not be created",
|
|
|
|
StorePathExists => "Store path exists",
|
|
|
|
StorePathCreate => "Store path create",
|
|
|
|
LockError => "Error locking datastructure",
|
|
|
|
LockPoisoned => "The internal Store Lock has been poisoned",
|
|
|
|
EntryAlreadyBorrowed => "Entry is already borrowed",
|
|
|
|
EntryAlreadyExists => "Entry already exists",
|
|
|
|
MalformedEntry => "Entry has invalid formatting, missing header",
|
|
|
|
HeaderPathSyntaxError => "Syntax error in accessor string",
|
|
|
|
HeaderPathTypeFailure => "Header has wrong type for path",
|
|
|
|
HeaderKeyNotFound => "Header Key not found",
|
|
|
|
HeaderTypeFailure => "Header type is wrong",
|
|
|
|
HookRegisterError => "Hook register error",
|
|
|
|
AspectNameNotFoundError => "Aspect name not found",
|
|
|
|
HookExecutionError => "Hook execution error",
|
|
|
|
PreHookExecuteError => "Pre-Hook execution error",
|
|
|
|
PostHookExecuteError => "Post-Hook execution error",
|
|
|
|
StorePathLacksVersion => "The supplied store path has no version part",
|
|
|
|
GlobError => "glob() error",
|
|
|
|
EncodingError => "Encoding error"
|
|
|
|
);
|
|
|
|
|
|
|
|
generate_error_types!(ParserError, ParserErrorKind,
|
|
|
|
TOMLParserErrors => "Several TOML-Parser-Errors",
|
|
|
|
MissingMainSection => "Missing main section",
|
|
|
|
MissingVersionInfo => "Missing version information in main section",
|
|
|
|
NonTableInBaseTable => "A non-table was found in the base table",
|
|
|
|
HeaderInconsistency => "The header is inconsistent"
|
|
|
|
);
|
2016-01-12 17:51:13 +00:00
|
|
|
|
2016-01-23 16:30:01 +00:00
|
|
|
impl From<ParserError> for StoreError {
|
|
|
|
fn from(ps: ParserError) -> StoreError {
|
|
|
|
StoreError {
|
|
|
|
err_type: StoreErrorKind::MalformedEntry,
|
|
|
|
cause: Some(Box::new(ps)),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-01-23 15:26:02 +00:00
|
|
|
|
2016-01-24 15:01:37 +00:00
|
|
|
impl From<::std::io::Error> for StoreError {
|
|
|
|
fn from(ps: ::std::io::Error) -> StoreError {
|
|
|
|
StoreError {
|
|
|
|
err_type: StoreErrorKind::IoError,
|
|
|
|
cause: Some(Box::new(ps)),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|