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}