Skip to main content

tuwunel_core/utils/result/
inspect_log.rs

1use 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}