Share one Namespace type between gen and macro
diff --git a/gen/mod.rs b/gen/mod.rs
index 523ba1d..998cd14 100644
--- a/gen/mod.rs
+++ b/gen/mod.rs
@@ -3,12 +3,11 @@
mod error;
pub(super) mod include;
-mod namespace;
pub(super) mod out;
mod write;
use self::error::format_err;
-use self::namespace::Namespace;
+use crate::syntax::namespace::Namespace;
use crate::syntax::{self, check, ident, Types};
use quote::quote;
use std::fs;
diff --git a/gen/namespace.rs b/gen/namespace.rs
deleted file mode 100644
index 557e331..0000000
--- a/gen/namespace.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-use std::fmt::{self, Display};
-use std::slice::Iter;
-
-#[derive(Clone)]
-pub struct Namespace {
- segments: Vec<String>,
-}
-
-impl Namespace {
- pub fn new(segments: Vec<String>) -> Self {
- Namespace { segments }
- }
-
- pub fn iter(&self) -> Iter<String> {
- self.segments.iter()
- }
-}
-
-impl Display for Namespace {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- for segment in self {
- f.write_str(segment)?;
- f.write_str("$")?;
- }
- Ok(())
- }
-}
-
-impl<'a> IntoIterator for &'a Namespace {
- type Item = &'a String;
- type IntoIter = Iter<'a, String>;
- fn into_iter(self) -> Self::IntoIter {
- self.iter()
- }
-}
diff --git a/gen/out.rs b/gen/out.rs
index 35f2cd7..08bf85f 100644
--- a/gen/out.rs
+++ b/gen/out.rs
@@ -1,5 +1,5 @@
use crate::gen::include::Includes;
-use crate::gen::namespace::Namespace;
+use crate::syntax::namespace::Namespace;
use std::cell::RefCell;
use std::fmt::{self, Arguments, Write};
diff --git a/gen/write.rs b/gen/write.rs
index 7a57111..28a2d3b 100644
--- a/gen/write.rs
+++ b/gen/write.rs
@@ -1,7 +1,7 @@
-use crate::gen::namespace::Namespace;
use crate::gen::out::OutFile;
use crate::gen::{include, Opt};
use crate::syntax::atom::Atom::{self, *};
+use crate::syntax::namespace::Namespace;
use crate::syntax::{Api, ExternFn, ExternType, Receiver, Signature, Struct, Type, Types, Var};
use proc_macro2::Ident;
use std::collections::HashMap;