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())
}
}