diesel_adapter/
error.rs

1use diesel::{r2d2::PoolError, result::Error as DieselError};
2
3use std::{error::Error as StdError, fmt};
4
5#[derive(Debug)]
6pub enum Error {
7    PoolError(PoolError),
8    DieselError(DieselError),
9}
10
11impl fmt::Display for Error {
12    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
13        use Error::*;
14
15        match self {
16            PoolError(pool_err) => pool_err.fmt(f),
17            DieselError(diesel_error) => diesel_error.fmt(f),
18        }
19    }
20}
21
22impl StdError for Error {
23    fn source(&self) -> Option<&(dyn StdError + 'static)> {
24        use Error::*;
25
26        match self {
27            PoolError(pool_err) => Some(pool_err),
28            DieselError(diesel_error) => Some(diesel_error),
29        }
30    }
31}
32
33impl From<PoolError> for Error {
34    fn from(err: PoolError) -> Self {
35        Error::PoolError(err)
36    }
37}
38
39impl From<DieselError> for Error {
40    fn from(err: DieselError) -> Self {
41        Error::DieselError(err)
42    }
43}