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.
///