Update examples to Rust 2018
diff --git a/examples/dump-syntax/Cargo.toml b/examples/dump-syntax/Cargo.toml
index aee56ff..0174f0b 100644
--- a/examples/dump-syntax/Cargo.toml
+++ b/examples/dump-syntax/Cargo.toml
@@ -2,6 +2,7 @@
 name = "dump-syntax"
 version = "0.0.0"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
+edition = "2018"
 publish = false
 
 [dependencies.syn]
diff --git a/examples/dump-syntax/main.rs b/examples/dump-syntax/main.rs
index 584fe3c..0739a67 100644
--- a/examples/dump-syntax/main.rs
+++ b/examples/dump-syntax/main.rs
@@ -17,8 +17,6 @@
 //!         ...
 //!     }
 
-extern crate syn;
-
 use std::env;
 use std::fs::File;
 use std::io::Read;
diff --git a/examples/heapsize/README.md b/examples/heapsize/README.md
index a99b727..1e36baf 100644
--- a/examples/heapsize/README.md
+++ b/examples/heapsize/README.md
@@ -1,5 +1,5 @@
-A complete working implementation of a custom derive. Works on any Rust compiler
-1.15+.
+A complete working implementation of a custom derive. Written in Rust 2018 style
+but otherwise works on any Rust compiler 1.15+.
 
 - [`heapsize/src/lib.rs`](heapsize/src/lib.rs)
 - [`heapsize_derive/src/lib.rs`](heapsize_derive/src/lib.rs)
diff --git a/examples/heapsize/example/Cargo.toml b/examples/heapsize/example/Cargo.toml
index 0384d16..ebfaeb9 100644
--- a/examples/heapsize/example/Cargo.toml
+++ b/examples/heapsize/example/Cargo.toml
@@ -2,6 +2,7 @@
 name = "heapsize_example"
 version = "0.0.0"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
+edition = "2018"
 publish = false
 
 [dependencies]
diff --git a/examples/heapsize/example/src/main.rs b/examples/heapsize/example/src/main.rs
index f29d237..f273a3e 100644
--- a/examples/heapsize/example/src/main.rs
+++ b/examples/heapsize/example/src/main.rs
@@ -1,8 +1,5 @@
-#[macro_use]
-extern crate heapsize_derive;
-
-extern crate heapsize;
 use heapsize::HeapSize;
+use heapsize_derive::HeapSize;
 
 #[derive(HeapSize)]
 struct Demo<'a, T: ?Sized> {
diff --git a/examples/heapsize/heapsize/Cargo.toml b/examples/heapsize/heapsize/Cargo.toml
index 7f321b5..f0183b4 100644
--- a/examples/heapsize/heapsize/Cargo.toml
+++ b/examples/heapsize/heapsize/Cargo.toml
@@ -2,6 +2,5 @@
 name = "heapsize"
 version = "0.0.0"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
+edition = "2018"
 publish = false
-
-[dependencies]
diff --git a/examples/heapsize/heapsize_derive/Cargo.toml b/examples/heapsize/heapsize_derive/Cargo.toml
index a71ab0a..6958c32 100644
--- a/examples/heapsize/heapsize_derive/Cargo.toml
+++ b/examples/heapsize/heapsize_derive/Cargo.toml
@@ -2,6 +2,7 @@
 name = "heapsize_derive"
 version = "0.0.0"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
+edition = "2018"
 publish = false
 
 [lib]
diff --git a/examples/heapsize/heapsize_derive/src/lib.rs b/examples/heapsize/heapsize_derive/src/lib.rs
index 2693bdd..ad9bb48 100644
--- a/examples/heapsize/heapsize_derive/src/lib.rs
+++ b/examples/heapsize/heapsize_derive/src/lib.rs
@@ -1,15 +1,9 @@
 extern crate proc_macro;
-extern crate proc_macro2;
-
-#[macro_use]
-extern crate syn;
-
-#[macro_use]
-extern crate quote;
 
 use proc_macro2::TokenStream;
+use quote::{quote, quote_spanned};
 use syn::spanned::Spanned;
-use syn::{Data, DeriveInput, Fields, GenericParam, Generics, Index};
+use syn::{parse_macro_input, parse_quote, Data, DeriveInput, Fields, GenericParam, Generics, Index};
 
 #[proc_macro_derive(HeapSize)]
 pub fn derive_heap_size(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
diff --git a/examples/lazy-static/example/Cargo.toml b/examples/lazy-static/example/Cargo.toml
index d5d40c5..716b08c 100644
--- a/examples/lazy-static/example/Cargo.toml
+++ b/examples/lazy-static/example/Cargo.toml
@@ -2,6 +2,7 @@
 name = "example"
 version = "0.0.0"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
+edition = "2018"
 publish = false
 
 [dependencies]
diff --git a/examples/lazy-static/example/src/main.rs b/examples/lazy-static/example/src/main.rs
index 4c3a160..c4f64af 100644
--- a/examples/lazy-static/example/src/main.rs
+++ b/examples/lazy-static/example/src/main.rs
@@ -1,6 +1,3 @@
-extern crate lazy_static;
-extern crate regex;
-
 use lazy_static::lazy_static;
 use regex::Regex;
 
diff --git a/examples/lazy-static/lazy-static/Cargo.toml b/examples/lazy-static/lazy-static/Cargo.toml
index d5c8e3c..c1a9dfc 100644
--- a/examples/lazy-static/lazy-static/Cargo.toml
+++ b/examples/lazy-static/lazy-static/Cargo.toml
@@ -2,6 +2,7 @@
 name = "lazy_static"
 version = "0.0.0"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
+edition = "2018"
 publish = false
 
 [lib]
diff --git a/examples/lazy-static/lazy-static/src/lib.rs b/examples/lazy-static/lazy-static/src/lib.rs
index 5ee33a7..0def688 100644
--- a/examples/lazy-static/lazy-static/src/lib.rs
+++ b/examples/lazy-static/lazy-static/src/lib.rs
@@ -1,16 +1,13 @@
 #![recursion_limit = "128"]
 #![feature(proc_macro_diagnostic)]
 
-#[macro_use]
-extern crate syn;
-#[macro_use]
-extern crate quote;
 extern crate proc_macro;
+use self::proc_macro::TokenStream;
 
-use proc_macro::TokenStream;
+use quote::{quote, quote_spanned};
 use syn::parse::{Parse, ParseStream, Result};
 use syn::spanned::Spanned;
-use syn::{Expr, Ident, Type, Visibility};
+use syn::{parse_macro_input, Expr, Ident, Token, Type, Visibility};
 
 /// Parses the following syntax, which aligns with the input of the real
 /// `lazy_static` crate.
diff --git a/examples/trace-var/example/Cargo.toml b/examples/trace-var/example/Cargo.toml
index 8c2d99d..d2ad650 100644
--- a/examples/trace-var/example/Cargo.toml
+++ b/examples/trace-var/example/Cargo.toml
@@ -2,6 +2,7 @@
 name = "example"
 version = "0.0.0"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
+edition = "2018"
 publish = false
 
 [dependencies]
diff --git a/examples/trace-var/example/src/main.rs b/examples/trace-var/example/src/main.rs
index 3e069ae..da2c10b 100644
--- a/examples/trace-var/example/src/main.rs
+++ b/examples/trace-var/example/src/main.rs
@@ -1,4 +1,3 @@
-extern crate trace_var;
 use trace_var::trace_var;
 
 fn main() {
diff --git a/examples/trace-var/trace-var/Cargo.toml b/examples/trace-var/trace-var/Cargo.toml
index 4a14bd1..0228ed5 100644
--- a/examples/trace-var/trace-var/Cargo.toml
+++ b/examples/trace-var/trace-var/Cargo.toml
@@ -2,6 +2,7 @@
 name = "trace-var"
 version = "0.0.0"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
+edition = "2018"
 publish = false
 
 [lib]
diff --git a/examples/trace-var/trace-var/src/lib.rs b/examples/trace-var/trace-var/src/lib.rs
index 11c4b91..2d4801d 100644
--- a/examples/trace-var/trace-var/src/lib.rs
+++ b/examples/trace-var/trace-var/src/lib.rs
@@ -1,18 +1,12 @@
 extern crate proc_macro;
+use self::proc_macro::TokenStream;
 
-#[macro_use]
-extern crate syn;
-
-#[macro_use]
-extern crate quote;
-
-use proc_macro::TokenStream;
-use quote::ToTokens;
+use quote::{quote, ToTokens};
 use std::collections::HashSet as Set;
 use syn::fold::{self, Fold};
 use syn::parse::{Parse, ParseStream, Result};
 use syn::punctuated::Punctuated;
-use syn::{Expr, Ident, ItemFn, Local, Pat, Stmt};
+use syn::{parse_macro_input, parse_quote, Expr, Ident, ItemFn, Local, Pat, Stmt, Token};
 
 /// Parses a list of variable names separated by commas.
 ///