use std::fmt::{Debug, Display, Formatter};
pub trait LibError: Debug {
fn get_message(&self) -> &str;
fn get_type_name_from_instance(&self) -> &str;
}
#[derive(PartialEq, Debug)]
pub struct MissingArgumentError {
message: String,
}
impl Default for MissingArgumentError {
fn default() -> Self {
MissingArgumentError {
message: "인자가 누락되었습니다.".to_owned(),
}
}
}
impl LibError for MissingArgumentError {
fn get_message(&self) -> &str {
self.message.as_str()
}
fn get_type_name_from_instance(&self) -> &str {
return std::any::type_name::<MissingArgumentError>();
}
}
impl From<&str> for MissingArgumentError {
fn from(value: &str) -> Self {
MissingArgumentError {
message: value.to_owned(),
}
}
}
impl Display for MissingArgumentError {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "Missing argument error.")
}
}
#[derive(PartialEq, Debug)]
pub struct InvalidArgumentError {
message: String,
}
impl InvalidArgumentError {
pub fn new(message: &str) -> Self {
Self {
message: message.to_owned(),
}
}
}
impl Default for InvalidArgumentError {
fn default() -> Self {
InvalidArgumentError {
message: "유효하지 않은 인자 입니다.".to_owned(),
}
}
}
impl LibError for InvalidArgumentError {
fn get_message(&self) -> &str {
self.message.as_str()
}
fn get_type_name_from_instance(&self) -> &str {
return std::any::type_name::<InvalidArgumentError>();
}
}
impl Display for InvalidArgumentError {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "Invalid argument error.")
}
}
impl From<&str> for InvalidArgumentError {
fn from(value: &str) -> Self {
InvalidArgumentError {
message: value.to_owned(),
}
}
}