use crate::prelude::*; use nu_source::{DebugDocBuilder, Spanned, SpannedItem, Tagged}; pub trait ShellTypeName { fn type_name(&self) -> &'static str; } impl ShellTypeName for Spanned { fn type_name(&self) -> &'static str { self.item.type_name() } } impl ShellTypeName for &T { fn type_name(&self) -> &'static str { (*self).type_name() } } pub trait SpannedTypeName { fn spanned_type_name(&self) -> Spanned<&'static str>; } impl SpannedTypeName for T { fn spanned_type_name(&self) -> Spanned<&'static str> { self.type_name().spanned(self.span()) } } impl SpannedTypeName for Tagged { fn spanned_type_name(&self) -> Spanned<&'static str> { self.item.type_name().spanned(self.tag.span) } } pub trait PrettyType { fn pretty_type(&self) -> DebugDocBuilder; }