1use std::{fmt, error};
2
3use std::sync::mpsc::RecvError;
4
5#[derive(Debug)]
6pub enum ConnectionManagerError {
7 LibsqlError(libsql::Error),
8 RecvError(RecvError),
9}
10
11impl fmt::Display for ConnectionManagerError {
12 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
13 match self {
14 ConnectionManagerError::LibsqlError(err) => write!(f, "Libsql Error: `{}`", err),
15 ConnectionManagerError::RecvError(err) => write!(f, "Recv Error: `{}`", err),
16 }
17 }
18}
19
20impl error::Error for ConnectionManagerError {
21 fn source(&self) -> Option<&(dyn error::Error + 'static)> {
22 match self {
23 Self::LibsqlError(err) => Some(err),
24 Self::RecvError(err) => Some(err),
25 }
26 }
27}
28
29impl From<libsql::Error> for ConnectionManagerError {
30 fn from(value: libsql::Error) -> Self {
31 ConnectionManagerError::LibsqlError(value)
32 }
33}
34
35impl From<RecvError> for ConnectionManagerError {
36 fn from(value: RecvError) -> Self {
37 ConnectionManagerError::RecvError(value)
38 }
39}