Fix blank first line if no headers emitted
diff --git a/gen/include.rs b/gen/include.rs
index a7657e4..b19a097 100644
--- a/gen/include.rs
+++ b/gen/include.rs
@@ -26,7 +26,7 @@
     }
 }
 
-#[derive(Default)]
+#[derive(Default, PartialEq)]
 pub struct Includes {
     custom: Vec<String>,
     pub array: bool,
@@ -74,6 +74,9 @@
         if self.type_traits {
             writeln!(f, "#include <type_traits>")?;
         }
+        if *self != Self::default() {
+            writeln!(f)?;
+        }
         Ok(())
     }
 }
diff --git a/gen/out.rs b/gen/out.rs
index 124816f..2a5b17d 100644
--- a/gen/out.rs
+++ b/gen/out.rs
@@ -53,14 +53,18 @@
     fn write_str(&mut self, s: &str) -> fmt::Result {
         if !s.is_empty() {
             if !self.blocks_pending.is_empty() {
-                self.content.push(b'\n');
+                if !self.content.is_empty() {
+                    self.content.push(b'\n');
+                }
                 for block in self.blocks_pending.drain(..) {
                     self.content.extend_from_slice(block.as_bytes());
                     self.content.extend_from_slice(b" {\n");
                 }
                 self.section_pending = false;
             } else if self.section_pending {
-                self.content.push(b'\n');
+                if !self.content.is_empty() {
+                    self.content.push(b'\n');
+                }
                 self.section_pending = false;
             }
             self.content.extend_from_slice(s.as_bytes());