Update codegen to 2018 edition
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};