1use std::fmt::{Debug, Display, Formatter};
4
5pub trait LibError: Debug {
14 fn get_message(&self) -> &str;
17
18 fn get_type_name_from_instance(&self) -> &str;
20}
21
22#[derive(PartialEq, Debug)]
25pub struct MissingArgumentError {
26 message: String,
27}
28
29impl Default for MissingArgumentError {
30 fn default() -> Self {
31 MissingArgumentError {
32 message: "인자가 누락되었습니다.".to_owned(),
33 }
34 }
35}
36
37impl LibError for MissingArgumentError {
38 fn get_message(&self) -> &str {
39 self.message.as_str()
40 }
41
42 fn get_type_name_from_instance(&self) -> &str {
43 return std::any::type_name::<MissingArgumentError>();
44 }
45}
46
47impl From<&str> for MissingArgumentError {
48 fn from(value: &str) -> Self {
49 MissingArgumentError {
50 message: value.to_owned(),
51 }
52 }
53}
54
55impl Display for MissingArgumentError {
56 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
57 write!(f, "Missing argument error.")
58 }
59}
60
61#[derive(PartialEq, Debug)]
64pub struct InvalidArgumentError {
65 message: String,
66}
67
68impl InvalidArgumentError {
69 pub fn new(message: &str) -> Self {
70 Self {
71 message: message.to_owned(),
72 }
73 }
74}
75
76impl Default for InvalidArgumentError {
77 fn default() -> Self {
78 InvalidArgumentError {
79 message: "유효하지 않은 인자 입니다.".to_owned(),
80 }
81 }
82}
83
84impl LibError for InvalidArgumentError {
85 fn get_message(&self) -> &str {
86 self.message.as_str()
87 }
88
89 fn get_type_name_from_instance(&self) -> &str {
90 return std::any::type_name::<InvalidArgumentError>();
91 }
92}
93
94impl Display for InvalidArgumentError {
95 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
96 write!(f, "Invalid argument error.")
97 }
98}
99
100impl From<&str> for InvalidArgumentError {
101 fn from(value: &str) -> Self {
102 InvalidArgumentError {
103 message: value.to_owned(),
104 }
105 }
106}