usc 1.20230730.1349

A common lib for unitedservices
Documentation
use std::convert::Infallible;
use serde::{Serialize, Deserialize};
use std::default::Default;

use std::fmt::{Display, Formatter};
use std::io::{Error, ErrorKind};
use actix_web::error::QueryPayloadError;
use actix_web::ResponseError;
use bevy_reflect::{Reflect};
use crate::myerror::my_error;

#[derive(Reflect,Default,Serialize,Deserialize,Debug,Clone)]
pub struct MyError{
    message: String,
}

impl MyError {
    pub fn new_str(msg: &str)->Self {
        MyError::new(String::from(msg))
    }
    pub fn new(msg: String)->Self {
        eprintln!("ERROR:{:?}",msg);
        Self{
            message:msg,
        }
    }
}

impl Display for MyError {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", self.message)
    }
}

impl ResponseError for MyError {

}

impl std::convert::From<QueryPayloadError> for MyError{
    fn from(value: QueryPayloadError) -> Self {
        MyError::new(format!("{:?}",value))
    }
}

impl std::error::Error for MyError {

}
impl std::convert::From<std::io::Error> for MyError{
    fn from(value: Error) -> Self {
        MyError::new(value.to_string())
    }
}

impl std::convert::From<MyError> for std::io::Error{
    fn from(value: MyError) -> Self {
        std::io::Error::new(ErrorKind::Other,value.message)
    }
}
impl std::convert::From<reqwest::Error> for my_error::MyError{
    fn from(value: reqwest::Error) -> Self {
        MyError::new(value.to_string())
    }
}
impl std::convert::From<serde_json::error::Error> for  my_error::MyError{
    fn from(value: serde_json::Error) -> Self {
        MyError::new(value.to_string())
    }
}

impl std::convert::From<std::env::VarError> for my_error::MyError{
    fn from(value: std::env::VarError) -> Self {
        MyError::new(value.to_string())
    }
}