sdlan-rs/src/utils/error.rs
2024-03-17 23:27:27 +08:00

65 lines
1.5 KiB
Rust

use std::{convert::From, net::AddrParseError, string::ParseError};
use aes::cipher::typenum::IsLessOrEqual;
pub type Result<T> = std::result::Result<T, SDLanError>;
#[derive(Debug)]
pub enum SDLanError {
IOError(String),
NormalError(&'static str),
ConvertError(String),
SerializeError(String),
EncryptError(String),
DBError(String),
}
impl SDLanError {
pub fn as_str(&self) -> &str {
match *self {
Self::IOError(ref e) => e,
Self::NormalError(ref s) => s,
Self::ConvertError(ref e) => e,
Self::SerializeError(ref e) => e,
Self::EncryptError(ref e) => e,
Self::DBError(ref e) => e,
}
}
}
impl From<std::io::Error> for SDLanError {
fn from(value: std::io::Error) -> Self {
Self::IOError(value.to_string())
}
}
impl From<&'static str> for SDLanError {
fn from(value: &'static str) -> Self {
Self::NormalError(value)
}
}
impl From<serde_json::Error> for SDLanError {
fn from(value: serde_json::Error) -> Self {
Self::SerializeError(value.to_string())
}
}
impl From<sqlx::Error> for SDLanError {
fn from(value: sqlx::Error) -> Self {
Self::DBError(value.to_string())
}
}
impl From<ParseError> for SDLanError {
fn from(value: ParseError) -> Self {
Self::ConvertError(value.to_string())
}
}
impl From<AddrParseError> for SDLanError {
fn from(value: AddrParseError) -> Self {
Self::ConvertError(value.to_string())
}
}