Move non-boilerplate impls out of impls.rs
diff --git a/syntax/namespace.rs b/syntax/namespace.rs
index 5eb203a..41a38dd 100644
--- a/syntax/namespace.rs
+++ b/syntax/namespace.rs
@@ -1,4 +1,5 @@
 use crate::syntax::qualified::QualifiedName;
+use crate::syntax::Api;
 #[cfg(test)]
 use proc_macro2::Span;
 use quote::IdentFragment;
@@ -79,3 +80,17 @@
         self.iter()
     }
 }
+
+impl Api {
+    pub fn get_namespace(&self) -> Option<&Namespace> {
+        match self {
+            Api::CxxFunction(cfn) => Some(&cfn.ident.cxx.ns),
+            Api::CxxType(cty) => Some(&cty.ident.cxx.ns),
+            Api::Enum(enm) => Some(&enm.ident.cxx.ns),
+            Api::Struct(strct) => Some(&strct.ident.cxx.ns),
+            Api::RustType(rty) => Some(&rty.ident.cxx.ns),
+            Api::RustFunction(rfn) => Some(&rfn.ident.cxx.ns),
+            Api::Impl(_) | Api::Include(_) | Api::TypeAlias(_) => None,
+        }
+    }
+}