Skip to main content

intermodal_rs/image/docker/
errors.rs

1//! Our Error and Result Types
2//!
3//!
4use std::error::Error as StdError;
5use std::fmt;
6use std::result::Result;
7
8use super::client::ClientError;
9use super::reference::ReferenceError;
10
11pub type DockerImageResult<T> = Result<T, DockerImageError>;
12
13#[derive(Debug)]
14pub enum DockerImageError {
15    /// Error inside Docker Client
16    ClientError(String),
17
18    /// Error inside Docker Reference
19    ReferenceError(String),
20
21    /// Error inside Docker Transport
22    TransportError(String),
23
24    /// Error inside Docker Image Source
25    SourceError(String),
26
27    /// Catchall Error
28    GenericError(String),
29}
30
31impl StdError for DockerImageError {}
32
33impl fmt::Display for DockerImageError {
34    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
35        match *self {
36            DockerImageError::ClientError(ref msg) => write!(f, "Docker Client Error ({})", msg),
37            DockerImageError::ReferenceError(ref msg) => {
38                write!(f, "Docker Reference Error ({})", msg)
39            }
40            DockerImageError::TransportError(ref msg) => {
41                write!(f, "Docker Transport Error ({})", msg)
42            }
43            DockerImageError::SourceError(ref msg) => write!(f, "Docker Source Error ({})", msg),
44            DockerImageError::GenericError(ref msg) => write!(f, "Docker Generic Error ({})", msg),
45        }
46    }
47}
48
49impl From<ClientError> for DockerImageError {
50    fn from(e: ClientError) -> Self {
51        DockerImageError::ClientError(format!("{}", e))
52    }
53}
54
55impl From<ReferenceError> for DockerImageError {
56    fn from(e: ReferenceError) -> Self {
57        DockerImageError::ReferenceError(format!("{}", e))
58    }
59}