1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//! Home of error types returned by system contracts.
use failure::Fail;

pub mod mint;
pub mod pos;

/// An aggregate enum error with variants for each system contract's error.
#[derive(Fail, Debug, Copy, Clone)]
pub enum Error {
    /// Contains a [`mint::Error`].
    #[fail(display = "Mint error: {}", _0)]
    Mint(mint::Error),
    /// Contains a [`pos::Error`].
    #[fail(display = "Proof of Stake error: {}", _0)]
    Pos(pos::Error),
}

impl From<mint::Error> for Error {
    fn from(error: mint::Error) -> Error {
        Error::Mint(error)
    }
}

impl From<pos::Error> for Error {
    fn from(error: pos::Error) -> Error {
        Error::Pos(error)
    }
}