1#[macro_export]
5macro_rules! line_info {
6 () => {
7 format!("")
8 };
9}
10pub use line_info;
11
12#[macro_export]
19macro_rules! trace {
20 ($message:literal) => {
21 $crate::anytrace::Error {
22 level: $crate::anytrace::Level::Trace,
23 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($message))
24 }
25 };
26 ($error:expr) => {
27 $crate::anytrace::Error {
28 level: $crate::anytrace::Level::Trace,
29 message: format!("{}: {}", $crate::anytrace::line_info!(), $error)
30 }
31 };
32 ($fmt:expr, $($arg:tt)*) => {
33 $crate::anytrace::Error {
34 level: $crate::anytrace::Level::Trace,
35 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($fmt, $($arg)*))
36 }
37 };
38}
39pub use trace;
40
41#[macro_export]
48macro_rules! debug {
49 ($message:literal) => {
50 $crate::anytrace::Error {
51 level: $crate::anytrace::Level::Debug,
52 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($message))
53 }
54 };
55 ($error:expr) => {
56 $crate::anytrace::Error {
57 level: $crate::anytrace::Level::Debug,
58 message: format!("{}: {}", $crate::anytrace::line_info!(), $error)
59 }
60 };
61 ($fmt:expr, $($arg:tt)*) => {
62 $crate::anytrace::Error {
63 level: $crate::anytrace::Level::Debug,
64 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($fmt, $($arg)*))
65 }
66 };
67}
68pub use debug;
69
70#[macro_export]
77macro_rules! info {
78 ($message:literal) => {
79 $crate::anytrace::Error {
80 level: $crate::anytrace::Level::Info,
81 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($message))
82 }
83 };
84 ($error:expr) => {
85 $crate::anytrace::Error {
86 level: $crate::anytrace::Level::Info,
87 message: format!("{}: {}", $crate::anytrace::line_info!(), $error)
88 }
89 };
90 ($fmt:expr, $($arg:tt)*) => {
91 $crate::anytrace::Error {
92 level: $crate::anytrace::Level::Info,
93 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($fmt, $($arg)*))
94 }
95 };
96}
97pub use info;
98
99#[macro_export]
106macro_rules! warn {
107 ($message:literal) => {
108 $crate::anytrace::Error {
109 level: $crate::anytrace::Level::Warn,
110 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($message))
111 }
112 };
113 ($error:expr) => {
114 $crate::anytrace::Error {
115 level: $crate::anytrace::Level::Warn,
116 message: format!("{}: {}", $crate::anytrace::line_info!(), $error)
117 }
118 };
119 ($fmt:expr, $($arg:tt)*) => {
120 $crate::anytrace::Error {
121 level: $crate::anytrace::Level::Warn,
122 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($fmt, $($arg)*))
123 }
124 };
125}
126pub use crate::warn;
127
128#[macro_export]
135macro_rules! error {
136 ($message:literal) => {
137 $crate::anytrace::Error {
138 level: $crate::anytrace::Level::Error,
139 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($message))
140 }
141 };
142 ($error:expr) => {
143 $crate::anytrace::Error {
144 level: $crate::anytrace::Level::Error,
145 message: format!("{}: {}", $crate::anytrace::line_info!(), $error)
146 }
147 };
148 ($fmt:expr, $($arg:tt)*) => {
149 $crate::anytrace::Error {
150 level: $crate::anytrace::Level::Error,
151 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($fmt, $($arg)*))
152 }
153 };
154}
155pub use error;
156
157#[macro_export]
159macro_rules! log {
160 ($result:expr) => {
161 if let Err(ref error) = $result {
162 let mut error_level = error.level;
163 if error_level == $crate::anytrace::Level::Unspecified {
164 error_level = $crate::anytrace::DEFAULT_LOG_LEVEL;
165 }
166
167 match error_level {
168 $crate::anytrace::Level::Trace => {
169 tracing::trace!("{}", error.message);
170 },
171 $crate::anytrace::Level::Debug => {
172 tracing::debug!("{}", error.message);
173 },
174 $crate::anytrace::Level::Info => {
175 tracing::info!("{}", error.message);
176 },
177 $crate::anytrace::Level::Warn => {
178 tracing::warn!("{}", error.message);
179 },
180 $crate::anytrace::Level::Error => {
181 tracing::error!("{}", error.message);
182 },
183 $crate::anytrace::Level::Unspecified => {},
185 }
186 }
187 };
188}
189pub use log;
190
191#[macro_export]
199macro_rules! ensure {
200 ($condition:expr) => {
201 if !$condition {
202 let result = Err($crate::anytrace::Error {
203 level: $crate::anytrace::Level::Unspecified,
204 message: format!("{}: condition '{}' failed.", $crate::anytrace::line_info!(), stringify!($condition))
205 });
206
207 $crate::anytrace::log!(result);
208
209 return result;
210 }
211 };
212 ($condition:expr, $message:literal) => {
213 if !$condition {
214 let result = Err($crate::anytrace::Error {
215 level: $crate::anytrace::Level::Unspecified,
216 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($message))
217 });
218
219 $crate::anytrace::log!(result);
220
221 return result;
222 }
223 };
224 ($condition:expr, $fmt:expr, $($arg:tt)*) => {
225 if !$condition {
226 let result = Err($crate::anytrace::Error {
227 level: $crate::anytrace::Level::Unspecified,
228 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($fmt, $($arg)*))
229 });
230
231 $crate::anytrace::log!(result);
232
233 return result;
234 }
235 };
236 ($condition:expr, $error:expr) => {
237 if !$condition {
238 let result = Err($error);
239
240 $crate::anytrace::log!(result);
241
242 return result;
243 }
244 };
245}
246pub use ensure;
247
248#[macro_export]
256macro_rules! bail {
257 () => {
258 let result = Err($crate::anytrace::Error {
259 level: $crate::anytrace::Level::Unspecified,
260 message: format!("{}: bailed.", $crate::anytrace::line_info!()),
261 });
262
263 $crate::anytrace::log!(result);
264
265 return result;
266 };
267 ($message:literal) => {
268 let result = Err($crate::anytrace::Error {
269 level: $crate::anytrace::Level::Unspecified,
270 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($message))
271 });
272
273 $crate::anytrace::log!(result);
274
275 return result;
276 };
277 ($fmt:expr, $($arg:tt)*) => {
278 let result = Err($crate::anytrace::Error {
279 level: $crate::anytrace::Level::Unspecified,
280 message: format!("{}: {}", $crate::anytrace::line_info!(), format!($fmt, $($arg)*))
281 });
282
283 $crate::anytrace::log!(result);
284
285 return result;
286 };
287 ($error:expr) => {
288 let result = Err($error);
289
290 $crate::anytrace::log!(result);
291
292 return result;
293 };
294}
295pub use bail;