Update codegen to 2018 edition
diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml
index 70274fa..66c1a7e 100644
--- a/codegen/Cargo.toml
+++ b/codegen/Cargo.toml
@@ -1,7 +1,8 @@
 [package]
 name = "syn_codegen"
-version = "0.1.0"
+version = "0.0.0"
 authors = ["Nika Layzell <nika@thelayzells.com>"]
+edition = "2018"
 
 publish = false # this is an internal crate which should never be published
 
@@ -13,8 +14,7 @@
 inflections = "1.1"
 proc-macro2 = "0.4"
 rustfmt-nightly = { git = "https://github.com/rust-lang-nursery/rustfmt" }
-serde = "1.0.88"
-serde_derive = "1.0.88"
+serde = { version = "1.0.88", features = ["derive"] }
 serde_json = "1.0.38"
 toml = "0.4.10"
 
diff --git a/codegen/src/gen.rs b/codegen/src/gen.rs
index cb4bab6..291758e 100644
--- a/codegen/src/gen.rs
+++ b/codegen/src/gen.rs
@@ -12,6 +12,8 @@
 
 use crate::types;
 use proc_macro2::TokenStream;
+use quote::quote;
+use rustfmt_nightly as rustfmt;
 
 use std::fs::File;
 use std::io::Write;
@@ -24,7 +26,7 @@
     use crate::types;
     use inflections::Inflect;
     use proc_macro2::{Span, TokenStream};
-    use quote::TokenStreamExt;
+    use quote::{quote, TokenStreamExt};
     use syn::*;
 
     #[derive(Default)]
@@ -358,7 +360,7 @@
                     features.any.contains("full") && features.any.len() == 1
                 }
 
-                let mut res = simple_visit(t, kind, name);
+                let res = simple_visit(t, kind, name);
 
                 let target = defs.types.iter().find(|ty| ty.ident == *t).unwrap();
 
diff --git a/codegen/src/json.rs b/codegen/src/json.rs
index d870a64..66803ee 100644
--- a/codegen/src/json.rs
+++ b/codegen/src/json.rs
@@ -1,5 +1,7 @@
 use crate::types;
 
+use serde::{Serialize, Deserialize};
+
 use std::collections::BTreeMap;
 use std::fs::{self, File};
 use std::io::prelude::*;
diff --git a/codegen/src/main.rs b/codegen/src/main.rs
index 7ec9d2e..987235e 100644
--- a/codegen/src/main.rs
+++ b/codegen/src/main.rs
@@ -13,20 +13,6 @@
 #![recursion_limit = "128"]
 #![allow(clippy::needless_pass_by_value)]
 
-extern crate indexmap;
-extern crate inflections;
-extern crate proc_macro2;
-#[macro_use]
-extern crate quote;
-extern crate rustfmt_nightly as rustfmt;
-#[macro_use]
-extern crate syn;
-extern crate serde;
-#[macro_use]
-extern crate serde_derive;
-extern crate serde_json;
-extern crate toml;
-
 mod gen;
 mod json;
 mod parse;
diff --git a/codegen/src/parse.rs b/codegen/src/parse.rs
index eff8539..08aefd1 100644
--- a/codegen/src/parse.rs
+++ b/codegen/src/parse.rs
@@ -1,7 +1,8 @@
 use crate::types;
 
 use indexmap::IndexMap;
-use syn::{Data, DataStruct, DeriveInput, Ident, Item};
+use quote::quote;
+use syn::{parse_quote, Data, DataStruct, DeriveInput, Ident, Item};
 
 use std::collections::BTreeMap;
 use std::fs::File;
@@ -246,6 +247,7 @@
     use crate::types;
 
     use proc_macro2::TokenStream;
+    use quote::quote;
     use syn;
     use syn::parse::{Parse, ParseStream, Result};
     use syn::*;
diff --git a/codegen/src/types.rs b/codegen/src/types.rs
index 1e9eedf..0f8bd931 100644
--- a/codegen/src/types.rs
+++ b/codegen/src/types.rs
@@ -1,5 +1,5 @@
 use indexmap::IndexMap;
-use serde::{Deserialize, Deserializer};
+use serde::{Serialize, Deserialize, Deserializer};
 
 use std::collections::{BTreeMap, BTreeSet};