bootc_internal_utils/
result_ext.rs1pub trait ResultExt<T, E: std::fmt::Display> {
3 fn log_err_or_else<F>(self, default: F) -> T
5 where
6 F: FnOnce() -> T;
7 fn log_err_default(self) -> T
9 where
10 T: Default;
11}
12
13impl<T, E: std::fmt::Display> ResultExt<T, E> for Result<T, E> {
14 #[track_caller]
15 fn log_err_or_else<F>(self, default: F) -> T
16 where
17 F: FnOnce() -> T,
18 {
19 match self {
20 Ok(r) => r,
21 Err(e) => {
22 tracing::debug!("{e}");
23 default()
24 }
25 }
26 }
27
28 #[track_caller]
29 fn log_err_default(self) -> T
30 where
31 T: Default,
32 {
33 self.log_err_or_else(|| Default::default())
34 }
35}