diff options
Diffstat (limited to 'common/object/src/inspect.rs')
| -rw-r--r-- | common/object/src/inspect.rs | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/common/object/src/inspect.rs b/common/object/src/inspect.rs index 871fae8..21648bd 100644 --- a/common/object/src/inspect.rs +++ b/common/object/src/inspect.rs @@ -4,11 +4,12 @@ Copyright (C) 2026 metamuffin <metamuffin.org> */ -use crate::{Object, Registry, types::*}; -use std::fmt::Debug; +use crate::{Object, Registry, Tag, TypedTag, types::*}; +use std::{any::type_name, fmt::Debug}; -pub struct ObjectInpector<'a>(pub &'a Registry, pub Object<'a>); -impl Debug for ObjectInpector<'_> { +pub struct Inspector<'a, T>(pub &'a Registry, pub T); + +impl Debug for Inspector<'_, Object<'_>> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let mut s = f.debug_struct("Object"); let mut nonexhaustive = false; @@ -36,3 +37,18 @@ impl Debug for ObjectInpector<'_> { } } } + +impl<T> Debug for Inspector<'_, TypedTag<T>> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let name = self.0.info(self.1.0).map(|t| t.name).unwrap_or("unknown"); + f.debug_tuple(&format!("TypedTag<{}>", type_name::<T>())) + .field(&name) + .finish() + } +} +impl Debug for Inspector<'_, Tag> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let name = self.0.info(self.1).map(|t| t.name).unwrap_or("unknown"); + f.debug_tuple("Tag").field(&name).finish() + } +} |