Move syntax Include to gen Include conversion to From impl
diff --git a/gen/src/include.rs b/gen/src/include.rs
index 705ca24..309d8c3 100644
--- a/gen/src/include.rs
+++ b/gen/src/include.rs
@@ -1,5 +1,5 @@
 use crate::gen::out::OutFile;
-use crate::syntax::IncludeKind;
+use crate::syntax::{self, IncludeKind};
 use std::fmt::{self, Display};
 
 /// The complete contents of the "rust/cxx.h" header.
@@ -84,8 +84,8 @@
         Includes::default()
     }
 
-    pub fn insert(&mut self, include: Include) {
-        self.custom.push(include);
+    pub fn insert(&mut self, include: impl Into<Include>) {
+        self.custom.push(include.into());
     }
 }
 
@@ -95,6 +95,15 @@
     }
 }
 
+impl<'a> From<&'a syntax::Include> for Include {
+    fn from(include: &syntax::Include) -> Self {
+        Include {
+            path: include.path.clone(),
+            kind: include.kind,
+        }
+    }
+}
+
 impl Display for Includes {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         for include in &self.custom {
diff --git a/gen/src/write.rs b/gen/src/write.rs
index f1c7a11..01617ca 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -1,4 +1,3 @@
-use crate::gen::include::Include;
 use crate::gen::out::OutFile;
 use crate::gen::{include, Opt};
 use crate::syntax::atom::Atom::{self, *};
@@ -25,9 +24,7 @@
     out.include.extend(&opt.include);
     for api in apis {
         if let Api::Include(include) = api {
-            let path = include.path.clone();
-            let kind = include.kind;
-            out.include.insert(Include { path, kind });
+            out.include.insert(include);
         }
     }