aboutsummaryrefslogtreecommitdiff
path: root/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/error.rs b/src/error.rs
index 3f60af2..dfe1680 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -11,6 +11,8 @@ pub enum Error {
CommandError(CommandError),
/// Placeholder for testing.
CommunicationError(CommunicationError),
+ /// An error that occured during random number generation.
+ RandError(rand_core::Error),
}
impl From<CommandError> for Error {
@@ -19,11 +21,18 @@ impl From<CommandError> for Error {
}
}
+impl From<rand_core::Error> for Error {
+ fn from(error: rand_core::Error) -> Self {
+ Error::RandError(error)
+ }
+}
+
impl error::Error for Error {
fn source(&self) -> Option<&(dyn error::Error + 'static)> {
match *self {
Error::CommandError(ref err) => Some(err),
Error::CommunicationError(_) => None,
+ Error::RandError(ref err) => Some(err),
}
}
}
@@ -33,6 +42,7 @@ impl fmt::Display for Error {
match *self {
Error::CommandError(ref err) => write!(f, "Command error: {}", err),
Error::CommunicationError(_) => write!(f, "Placeholder"),
+ Error::RandError(ref err) => write!(f, "RNG error: {}", err),
}
}
}
@@ -78,8 +88,6 @@ pub enum CommandError {
InvalidHexString,
/// The target buffer was smaller than the source.
TargetBufferTooSmall,
- /// An error occurred during random number generation.
- RngError,
}
/// Placeholder for testing.
@@ -119,7 +127,6 @@ impl CommandError {
"The supplied string is not in hexadecimal format".into()
}
CommandError::TargetBufferTooSmall => "The target buffer is too small".into(),
- CommandError::RngError => "An error occurred during random number generation".into(),
}
}
}
@@ -153,9 +160,3 @@ impl From<raw::c_int> for CommandError {
}
}
}
-
-impl From<rand_core::Error> for CommandError {
- fn from(_error: rand_core::Error) -> Self {
- CommandError::RngError
- }
-}