tuwunel_core/utils/result/
inspect_log.rs1use std::fmt;
2
3use tracing::Level;
4
5use super::Result;
6use crate::error;
7
8pub trait ErrLog<T, E>
9where
10 E: fmt::Display,
11{
12 #[must_use]
13 fn log_err(self, level: Level) -> Self;
14
15 #[inline]
16 #[must_use]
17 fn err_log(self) -> Self
18 where
19 Self: Sized,
20 {
21 self.log_err(Level::ERROR)
22 }
23}
24
25pub trait ErrDebugLog<T, E>
26where
27 E: fmt::Debug,
28{
29 #[must_use]
30 fn log_err_debug(self, level: Level) -> Self;
31
32 #[inline]
33 #[must_use]
34 fn err_debug_log(self) -> Self
35 where
36 Self: Sized,
37 {
38 self.log_err_debug(Level::ERROR)
39 }
40}
41
42impl<T, E> ErrLog<T, E> for Result<T, E>
43where
44 E: fmt::Display,
45{
46 #[inline]
47 fn log_err(self, level: Level) -> Self
48 where
49 Self: Sized,
50 {
51 self.inspect_err(|error| error::inspect_log_level(&error, level))
52 }
53}
54
55impl<T, E> ErrDebugLog<T, E> for Result<T, E>
56where
57 E: fmt::Debug,
58{
59 #[inline]
60 fn log_err_debug(self, level: Level) -> Self
61 where
62 Self: Sized,
63 {
64 self.inspect_err(|error| error::inspect_debug_log_level(&error, level))
65 }
66}