dabus/util/dyn_debug.rs
1use core::fmt::{self, Debug, Formatter};
2
3struct DefaultDbg;
4
5impl Debug for DefaultDbg {
6 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
7 f.debug_struct("{dyn DynDebug}").finish()
8 }
9}
10
11pub trait DynDebug {
12 fn as_dbg(&self) -> &dyn Debug;
13}
14
15impl<T> DynDebug for T {
16 default fn as_dbg(&self) -> &dyn Debug {
17 &DefaultDbg
18 }
19}
20
21impl<T: Debug> DynDebug for T {
22 fn as_dbg(&self) -> &dyn Debug {
23 self
24 }
25}