pub( crate ) mod private
{
pub trait Name
{
fn name( &self ) -> String;
}
impl Name for syn::Item
{
fn name( &self ) -> String
{
match self
{
syn::Item::Const( item ) => item.name(),
syn::Item::Enum( item ) => item.name(),
syn::Item::ExternCrate( item ) => item.name(),
syn::Item::Fn( item ) => item.name(),
syn::Item::Impl( item ) => item.name(),
syn::Item::Macro( item ) => item.name(),
syn::Item::Mod( item ) => item.name(),
syn::Item::Static( item ) => item.name(),
syn::Item::Struct( item ) => item.name(),
syn::Item::Trait( item ) => item.name(),
syn::Item::TraitAlias( item ) => item.name(),
syn::Item::Type( item ) => item.name(),
syn::Item::Union( item ) => item.name(),
_ => "".into(),
}
}
}
impl Name for syn::Path
{
fn name( &self ) -> String
{
let first = self.segments.first();
if first.is_none()
{
return "".into()
}
let first = first.unwrap();
first.ident.to_string()
}
}
impl Name for syn::ItemConst
{
fn name( &self ) -> String
{
self.ident.to_string()
}
}
impl Name for syn::ItemEnum
{
fn name( &self ) -> String
{
self.ident.to_string()
}
}
impl Name for syn::ItemExternCrate
{
fn name( &self ) -> String
{
self.ident.to_string()
}
}
impl Name for syn::ItemFn
{
fn name( &self ) -> String
{
self.sig.ident.to_string()
}
}
impl Name for syn::ItemImpl
{
fn name( &self ) -> String
{
if self.trait_.is_none()
{
return "".into()
}
let t = self.trait_.as_ref().unwrap();
t.1.name()
}
}
impl Name for syn::ItemMacro
{
fn name( &self ) -> String
{
if self.ident.is_none()
{
return "".to_string()
}
let ident = self.ident.as_ref().unwrap();
ident.to_string()
}
}
impl Name for syn::ItemMod
{
fn name( &self ) -> String
{
self.ident.to_string()
}
}
impl Name for syn::ItemStatic
{
fn name( &self ) -> String
{
self.ident.to_string()
}
}
impl Name for syn::ItemStruct
{
fn name( &self ) -> String
{
self.ident.to_string()
}
}
impl Name for syn::ItemTrait
{
fn name( &self ) -> String
{
self.ident.to_string()
}
}
impl Name for syn::ItemTraitAlias
{
fn name( &self ) -> String
{
self.ident.to_string()
}
}
impl Name for syn::ItemType
{
fn name( &self ) -> String
{
self.ident.to_string()
}
}
impl Name for syn::ItemUnion
{
fn name( &self ) -> String
{
self.ident.to_string()
}
}
}
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use protected::*;
pub mod protected
{
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use super::orphan::*;
}
pub mod orphan
{
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use super::exposed::*;
}
pub mod exposed
{
pub use super::protected as name;
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use super::prelude::*;
}
pub mod prelude
{
#[ doc( inline ) ]
#[ allow( unused_imports ) ]
pub use super::private::Name;
}