diff --git a/src/librustdoc/html/item_type.rs b/src/librustdoc/html/item_type.rs
index c3d38637ab7..039f385d7c5 100644
--- a/src/librustdoc/html/item_type.rs
+++ b/src/librustdoc/html/item_type.rs
@@ -42,6 +42,14 @@ pub enum ItemType {
AssociatedConst = 18,
}
+
+#[derive(Copy, Eq, PartialEq, Clone)]
+pub enum NameSpace {
+ Type,
+ Value,
+ Macro,
+}
+
impl ItemType {
pub fn from_item(item: &clean::Item) -> ItemType {
let inner = match item.inner {
@@ -113,6 +121,32 @@ impl ItemType {
ItemType::AssociatedConst => "associatedconstant",
}
}
+
+ pub fn name_space(&self) -> NameSpace {
+ match *self {
+ ItemType::Struct |
+ ItemType::Enum |
+ ItemType::Module |
+ ItemType::Typedef |
+ ItemType::Trait |
+ ItemType::Primitive |
+ ItemType::AssociatedType => NameSpace::Type,
+
+ ItemType::ExternCrate |
+ ItemType::Import |
+ ItemType::Function |
+ ItemType::Static |
+ ItemType::Impl |
+ ItemType::TyMethod |
+ ItemType::Method |
+ ItemType::StructField |
+ ItemType::Variant |
+ ItemType::Constant |
+ ItemType::AssociatedConst => NameSpace::Value,
+
+ ItemType::Macro => NameSpace::Macro,
+ }
+ }
}
impl fmt::Display for ItemType {
@@ -120,3 +154,17 @@ impl fmt::Display for ItemType {
self.css_class().fmt(f)
}
}
+
+pub const NAMESPACE_TYPE: &'static str = "t";
+pub const NAMESPACE_VALUE: &'static str = "v";
+pub const NAMESPACE_MACRO: &'static str = "m";
+
+impl NameSpace {
+ pub fn to_static_str(&self) -> &'static str {
+ match *self {
+ NameSpace::Type => NAMESPACE_TYPE,
+ NameSpace::Value => NAMESPACE_VALUE,
+ NameSpace::Macro => NAMESPACE_MACRO,
+ }
+ }
+}