[rust] Update to futures-preview alpha 6

Change-Id: Ia4824af26c9fb9fd3c76112f7e5f3b09843c0167
diff --git a/rustc_deps/Cargo.lock b/rustc_deps/Cargo.lock
index 09e6c70..f0f20a4 100644
--- a/rustc_deps/Cargo.lock
+++ b/rustc_deps/Cargo.lock
@@ -390,7 +390,7 @@
  "encode_unicode 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "failure 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "font-rs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "getopts 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)",
  "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -402,7 +402,7 @@
  "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
  "num-bigint 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
  "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "pin-utils 0.1.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pin-utils 0.1.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "rouille 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "rust-crypto 0.2.36",
@@ -440,15 +440,15 @@
 
 [[package]]
 name = "futures-channel-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "futures-core-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "futures-core-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -456,60 +456,60 @@
 
 [[package]]
 name = "futures-executor-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "futures-channel-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-core-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-util-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-channel-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-util-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "pin-utils 0.1.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pin-utils 0.1.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "futures-io-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "futures-core-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "futures-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "futures-channel-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-core-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-executor-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-io-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-sink-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-util-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-channel-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-executor-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-io-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-sink-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-util-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "futures-sink-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-channel-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-core-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-channel-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "futures-util-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-channel-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-core-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-io-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures-sink-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "pin-utils 0.1.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-channel-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-io-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-sink-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pin-utils 0.1.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "slab 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -871,7 +871,7 @@
 
 [[package]]
 name = "pin-utils"
-version = "0.1.0-alpha.1"
+version = "0.1.0-alpha.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
@@ -1528,13 +1528,13 @@
 "checksum filetime 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "714653f3e34871534de23771ac7b26e999651a0a228f47beb324dfdf1dd4b10f"
 "checksum flate2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9fac2277e84e5e858483756647a9d0aa8d9a2b7cba517fd84325a0aaa69a0909"
 "checksum font-rs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "33939d997b0ef798cc92c9cc49a535c9b085273e121cc8e8281561be1fd76cd2"
-"checksum futures-channel-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8b1569d10a46364ba450edfbd7c9349997fbe01591074d22a33cd1a096fcf33a"
-"checksum futures-core-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "33768a7a895bd14e3c24518454f233666387070acd0e8e671bd1c08f89abaf73"
-"checksum futures-executor-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94ddf580beef58db28c6f39461f9880c0b040342c3fbee10d920092d68953b1a"
-"checksum futures-io-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "772f2d8a4109b2d57347ed8bbb5a0535896ed190a6004af23cca86db8be1311d"
-"checksum futures-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "38810750d882eaa4be290c295c70230e1e724ae6c594261721fb51073cbbb6d8"
-"checksum futures-sink-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5188c94f2a7ab70f6b51fad1de15cf1375acd9cc7ee5c9f2207a3860ea39e41c"
-"checksum futures-util-preview 0.3.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "993195be08509499edcbf5be4bb94569f47fb9f4c336142dbf76362c2b4efd21"
+"checksum futures-channel-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "830e11a074bb23f72b129c63e2b9bb815e4889d69ea25013e890ab6faea40b23"
+"checksum futures-core-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "807fc76be951496ee25ddc56fbaaa8ab43447555f485a2bd04ae4da475e213d7"
+"checksum futures-executor-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b2ec9bde8750c958aca25c9611f470a26f74ead847057d155a1b51b1e5013d29"
+"checksum futures-io-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e6ff1712a0eeacacbfe09e776a39d97ab1dfb3453ad781b26b612e269f193f99"
+"checksum futures-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f94727f00f38d14a925c874e0ea68c92ffe212a0f36b41112631a089294056"
+"checksum futures-sink-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0478e09094535b45ffd4eb1272cd5975667277f1eed1acecb765642ee9010ffc"
+"checksum futures-util-preview 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ec23cc47a588bf2757a85f42b88f9171b5c348da2897c8085ed27a06cbd5ba9e"
 "checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb"
 "checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d"
 "checksum getopts 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" = "b900c08c1939860ce8b54dc6a89e26e00c04c380fd0e09796799bd7f12861e05"
@@ -1578,7 +1578,7 @@
 "checksum phf_codegen 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "4e4048fe7dd7a06b8127ecd6d3803149126e9b33c7558879846da3a63f734f2b"
 "checksum phf_generator 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "05a079dd052e7b674d21cb31cbb6c05efd56a2cd2827db7692e2f1a507ebd998"
 "checksum phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "c2261d544c2bb6aa3b10022b0be371b9c7c64f762ef28c6f5d4f1ef6d97b5930"
-"checksum pin-utils 0.1.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00732c0034856e25a209071dff2e5a3424cf8612808cda550cd4fda6668fbead"
+"checksum pin-utils 0.1.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4b99a48ed09e1394cb51732b8bfe61c8a97482b436499cb63655833d56580dae"
 "checksum plist 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c61ac2afed2856590ae79d6f358a24b85ece246d2aa134741a66d589519b7503"
 "checksum proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1b06e2f335f48d24442b35a19df506a835fb3547bc3c06ef27340da9acf5cae7"
 "checksum pulse 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "655612b6c8d96a8a02f331fe296cb4f925b68e87c1d195544675abca2d9b9af0"
diff --git a/rustc_deps/Cargo.toml b/rustc_deps/Cargo.toml
index e313421..7c353f6 100644
--- a/rustc_deps/Cargo.toml
+++ b/rustc_deps/Cargo.toml
@@ -21,7 +21,7 @@
 encode_unicode = "0.1.3"
 failure = "0.1.1"
 font-rs = "0.1.3"
-futures-preview = "=0.3.0-alpha.3"
+futures-preview = "=0.3.0-alpha.6"
 getopts = "0.2"
 hex = "0.3.2"
 itertools = "0.7"
@@ -33,7 +33,7 @@
 num = "0.1"
 num-bigint = "0.1"
 parking_lot = "0.4"
-pin-utils = "=0.1.0-alpha.1"
+pin-utils = "=0.1.0-alpha.2"
 rand = "0.4"
 rouille = "2.1.0"
 rust-crypto = "0.2"
diff --git a/rustc_deps/vendor/futures-channel-preview/.cargo-checksum.json b/rustc_deps/vendor/futures-channel-preview/.cargo-checksum.json
index e2bf276..c8f9c25 100644
--- a/rustc_deps/vendor/futures-channel-preview/.cargo-checksum.json
+++ b/rustc_deps/vendor/futures-channel-preview/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"f6d322cb3a17782433fda18242b2a50afeaa20013ac787d2c454cf3861fdcdc7","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","benches/sync_mpsc.rs":"9f8820e25249a6f590fdfe4226e48c0b3c1f4fe058d343971fb773e30c249168","src/lib.rs":"e1b8de41bd621b53fab854776d5d091ff8ae7176031a662761f39920aa438619","src/lock.rs":"069d717759d9353274005630e182f080e94ba8b9e52ba94ec9a8b6e884a832d4","src/mpsc/mod.rs":"b91f747356c18e4b079e3a1c9bcfa82ff297e30e90987d7f64a3062621021699","src/mpsc/queue.rs":"ab8fa445ceb023c9ca984a5527c52ab3de7656bce1c64cd4d1c7e31ec1f25ee7","src/oneshot.rs":"fb385c7e6542fcced1da0900b50d0a9621c4471a6649b539ce4bce83798d5086","tests/channel.rs":"254ceeb8ad9cb6c5936a5e75c6214bd6bc55e4c9ddeee1e0e3ee5ac89452b459","tests/mpsc-close.rs":"b41315392df9e6fe48ab4c2bf0e36a3b32b09e4c8c4d3bac2c22f79fa7f24b1c","tests/mpsc.rs":"c5cbf612c94f35ec5ed1ff8d0db29ee759d882c876eba9e9f40020b5cd6d649c","tests/oneshot.rs":"352d2c9ded587d8aeac73f4c45330dec8eff19d2f38cbb721d88cf857a534b10"},"package":"8b1569d10a46364ba450edfbd7c9349997fbe01591074d22a33cd1a096fcf33a"}
\ No newline at end of file
+{"files":{"Cargo.toml":"c695390c115b0e5fff89649bc4988d5797b577a79731d3f4a8972e3ee82e9839","LICENSE-APACHE":"275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","benches/sync_mpsc.rs":"be329dac07b56074e12fb7c3a769b6d66b26775765d569e2d58a4f9f498a1744","src/lib.rs":"5ab1a6c892609bee844cb2b02cfce92e4655b552a7b00b83d3fa96caa672edcd","src/lock.rs":"069d717759d9353274005630e182f080e94ba8b9e52ba94ec9a8b6e884a832d4","src/mpsc/mod.rs":"1b8454e6c930bf6346e2a211e3de5d791abfe6dc7f14500e3297e7803e3fa0c7","src/mpsc/queue.rs":"ab8fa445ceb023c9ca984a5527c52ab3de7656bce1c64cd4d1c7e31ec1f25ee7","src/oneshot.rs":"64c63b70ac09fc9a4e8abf12dcaa7f93ce30f324e64db76cd87bb4426ce1a70f","tests/channel.rs":"254ceeb8ad9cb6c5936a5e75c6214bd6bc55e4c9ddeee1e0e3ee5ac89452b459","tests/mpsc-close.rs":"b41315392df9e6fe48ab4c2bf0e36a3b32b09e4c8c4d3bac2c22f79fa7f24b1c","tests/mpsc.rs":"c5cbf612c94f35ec5ed1ff8d0db29ee759d882c876eba9e9f40020b5cd6d649c","tests/oneshot.rs":"85c850e37eb7b263266a7e425c406da3bd888fead5c9c9eef5ac33c9316f0191"},"package":"830e11a074bb23f72b129c63e2b9bb815e4889d69ea25013e890ab6faea40b23"}
\ No newline at end of file
diff --git a/rustc_deps/vendor/futures-channel-preview/Cargo.toml b/rustc_deps/vendor/futures-channel-preview/Cargo.toml
index 174c589..893befb 100644
--- a/rustc_deps/vendor/futures-channel-preview/Cargo.toml
+++ b/rustc_deps/vendor/futures-channel-preview/Cargo.toml
@@ -10,30 +10,22 @@
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
-cargo-features = ["edition"]
-
 [package]
+edition = "2018"
 name = "futures-channel-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 authors = ["Alex Crichton <alex@alexcrichton.com>"]
 description = "Channels for asynchronous communication using futures-rs.\n"
 homepage = "https://rust-lang-nursery.github.io/futures-rs"
-documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_channel"
+documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_channel"
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/rust-lang-nursery/futures-rs"
-edition = "2018"
 
 [lib]
 name = "futures_channel"
 [dependencies.futures-core-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
-[dev-dependencies.futures-preview]
-version = "0.3.0-alpha.3"
-default-features = true
-
-[dev-dependencies.pin-utils]
-version = "0.1.0-alpha.1"
 
 [features]
 default = ["std"]
diff --git a/rustc_deps/vendor/futures-channel-preview/LICENSE-APACHE b/rustc_deps/vendor/futures-channel-preview/LICENSE-APACHE
index 16fe87b..9eb0b09 100644
--- a/rustc_deps/vendor/futures-channel-preview/LICENSE-APACHE
+++ b/rustc_deps/vendor/futures-channel-preview/LICENSE-APACHE
@@ -186,7 +186,8 @@
    same "printed page" as the copyright notice for easier
    identification within third-party archives.
 
-Copyright [yyyy] [name of copyright owner]
+Copyright (c) 2016 Alex Crichton
+Copyright (c) 2017 The Tokio Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/rustc_deps/vendor/futures-channel-preview/benches/sync_mpsc.rs b/rustc_deps/vendor/futures-channel-preview/benches/sync_mpsc.rs
old mode 100755
new mode 100644
index f1b48f7..dc0b5c0
--- a/rustc_deps/vendor/futures-channel-preview/benches/sync_mpsc.rs
+++ b/rustc_deps/vendor/futures-channel-preview/benches/sync_mpsc.rs
@@ -6,7 +6,7 @@
 use futures::stream::{Stream, StreamExt};
 use futures::sink::Sink;
 use futures::task::{self, Poll, Wake, LocalWaker};
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::sync::Arc;
 use test::Bencher;
 
diff --git a/rustc_deps/vendor/futures-channel-preview/src/lib.rs b/rustc_deps/vendor/futures-channel-preview/src/lib.rs
index 7c3cdd7..dfe7086 100644
--- a/rustc_deps/vendor/futures-channel-preview/src/lib.rs
+++ b/rustc_deps/vendor/futures-channel-preview/src/lib.rs
@@ -10,7 +10,7 @@
 #![warn(missing_docs, missing_debug_implementations)]
 #![deny(bare_trait_objects)]
 
-#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_channel")]
+#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_channel")]
 
 macro_rules! if_std {
     ($($i:item)*) => ($(
diff --git a/rustc_deps/vendor/futures-channel-preview/src/mpsc/mod.rs b/rustc_deps/vendor/futures-channel-preview/src/mpsc/mod.rs
index de036c4..675aca7 100644
--- a/rustc_deps/vendor/futures-channel-preview/src/mpsc/mod.rs
+++ b/rustc_deps/vendor/futures-channel-preview/src/mpsc/mod.rs
@@ -84,7 +84,7 @@
 use std::error::Error;
 use std::fmt;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::sync::{Arc, Mutex};
 use std::sync::atomic::AtomicUsize;
 use std::sync::atomic::Ordering::SeqCst;
diff --git a/rustc_deps/vendor/futures-channel-preview/src/oneshot.rs b/rustc_deps/vendor/futures-channel-preview/src/oneshot.rs
index 5eb1a56..7e261e6 100644
--- a/rustc_deps/vendor/futures-channel-preview/src/oneshot.rs
+++ b/rustc_deps/vendor/futures-channel-preview/src/oneshot.rs
@@ -3,7 +3,7 @@
 use futures_core::future::Future;
 use futures_core::task::{self, Poll, Waker};
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::sync::Arc;
 use std::sync::atomic::AtomicBool;
 use std::sync::atomic::Ordering::SeqCst;
diff --git a/rustc_deps/vendor/futures-channel-preview/tests/oneshot.rs b/rustc_deps/vendor/futures-channel-preview/tests/oneshot.rs
index 899f080..2b7bcff 100644
--- a/rustc_deps/vendor/futures-channel-preview/tests/oneshot.rs
+++ b/rustc_deps/vendor/futures-channel-preview/tests/oneshot.rs
@@ -4,7 +4,7 @@
 use futures::executor::block_on;
 use futures::future::{Future, FutureExt, poll_fn};
 use futures::task::{self, Poll};
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::sync::mpsc;
 use std::thread;
 
diff --git a/rustc_deps/vendor/futures-core-preview/.cargo-checksum.json b/rustc_deps/vendor/futures-core-preview/.cargo-checksum.json
index 612b495..c35bc4c 100644
--- a/rustc_deps/vendor/futures-core-preview/.cargo-checksum.json
+++ b/rustc_deps/vendor/futures-core-preview/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"4ae1c496e54af58d1bcc568302cd459262e1f2ebfe28ac93de8a92329406b307","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","src/future.rs":"e88132a373a98a990f715bd7adb288ca5fba885316044086bd121f7d02448570","src/lib.rs":"d0c0fdbf383f1f5e15bb6dffe697e8a7e9bde268251450cc0b829a05cb6092c9","src/stream.rs":"b962c2adafc3ac3e60a21d674017f0ab70d62dd00764fa05d2e09b2a3f1f2e1d","src/task.rs":"ee9c970c340c17578fe29f1c6821641ed592bc4ec095497bc7de771e9963b005"},"package":"33768a7a895bd14e3c24518454f233666387070acd0e8e671bd1c08f89abaf73"}
\ No newline at end of file
+{"files":{".cargo_vcs_info.json":"eeea7772ffd76a9ebae1b92127c7a37a74057c6cb7a05336c757239e5d5f74f5","Cargo.toml":"1a7b4bf5db76c1c7e1db780b95d0ad5e904553e25c31eaec71cb8b70fdecee39","LICENSE-APACHE":"275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","src/future.rs":"0d11fc01ff65ec3380115f95ce58cf6164d318a843eb0970c7bdab3d0dd24b0e","src/lib.rs":"ace92e2de0b60c023c7096afbb866e0cea31f3f91e7617339850c2503cb70418","src/stream/mod.rs":"b2f77a63ef2c92b3f7553c7bfe4db4fd7e640183d767ed717d7bd8e731bb14c3","src/stream/stream_obj.rs":"3f1e85fd6d144acfb4806d1af8a4d8f8ade940b74774016ba30a665a0c9fe280","src/task.rs":"ee9c970c340c17578fe29f1c6821641ed592bc4ec095497bc7de771e9963b005"},"package":"807fc76be951496ee25ddc56fbaaa8ab43447555f485a2bd04ae4da475e213d7"}
\ No newline at end of file
diff --git a/rustc_deps/vendor/futures-core-preview/.cargo_vcs_info.json b/rustc_deps/vendor/futures-core-preview/.cargo_vcs_info.json
new file mode 100644
index 0000000..14213da
--- /dev/null
+++ b/rustc_deps/vendor/futures-core-preview/.cargo_vcs_info.json
@@ -0,0 +1,5 @@
+{
+  "git": {
+    "sha1": "2b2048910cf82cc468abd9d8e805224f7ab6da7a"
+  }
+}
diff --git a/rustc_deps/vendor/futures-core-preview/Cargo.toml b/rustc_deps/vendor/futures-core-preview/Cargo.toml
index 540e47d..6cf38da 100644
--- a/rustc_deps/vendor/futures-core-preview/Cargo.toml
+++ b/rustc_deps/vendor/futures-core-preview/Cargo.toml
@@ -10,18 +10,16 @@
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
-cargo-features = ["edition"]
-
 [package]
+edition = "2018"
 name = "futures-core-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 authors = ["Alex Crichton <alex@alexcrichton.com>"]
 description = "The core traits and types in for the `futures` library.\n"
 homepage = "https://rust-lang-nursery.github.io/futures-rs"
-documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_core"
+documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_core"
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/rust-lang-nursery/futures-rs"
-edition = "2018"
 
 [lib]
 name = "futures_core"
diff --git a/rustc_deps/vendor/futures-core-preview/LICENSE-APACHE b/rustc_deps/vendor/futures-core-preview/LICENSE-APACHE
index 16fe87b..9eb0b09 100644
--- a/rustc_deps/vendor/futures-core-preview/LICENSE-APACHE
+++ b/rustc_deps/vendor/futures-core-preview/LICENSE-APACHE
@@ -186,7 +186,8 @@
    same "printed page" as the copyright notice for easier
    identification within third-party archives.
 
-Copyright [yyyy] [name of copyright owner]
+Copyright (c) 2016 Alex Crichton
+Copyright (c) 2017 The Tokio Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/rustc_deps/vendor/futures-core-preview/src/future.rs b/rustc_deps/vendor/futures-core-preview/src/future.rs
index 66ba1cf..fc5a711 100644
--- a/rustc_deps/vendor/futures-core-preview/src/future.rs
+++ b/rustc_deps/vendor/futures-core-preview/src/future.rs
@@ -1,7 +1,7 @@
 //! Futures.
 
 use crate::task::{self, Poll};
-use core::mem::PinMut;
+use core::pin::PinMut;
 
 pub use core::future::{Future, FutureObj, LocalFutureObj, UnsafeFutureObj};
 
diff --git a/rustc_deps/vendor/futures-core-preview/src/lib.rs b/rustc_deps/vendor/futures-core-preview/src/lib.rs
index 686f9e7..cd58433 100644
--- a/rustc_deps/vendor/futures-core-preview/src/lib.rs
+++ b/rustc_deps/vendor/futures-core-preview/src/lib.rs
@@ -7,7 +7,7 @@
 #![warn(missing_docs, missing_debug_implementations)]
 #![deny(bare_trait_objects)]
 
-#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_core")]
+#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_core")]
 
 #[doc(hidden)] pub use crate::future::Future;
 #[doc(hidden)] pub use crate::future::TryFuture;
diff --git a/rustc_deps/vendor/futures-core-preview/src/stream.rs b/rustc_deps/vendor/futures-core-preview/src/stream/mod.rs
similarity index 96%
rename from rustc_deps/vendor/futures-core-preview/src/stream.rs
rename to rustc_deps/vendor/futures-core-preview/src/stream/mod.rs
index 262bebb..3d4a6d1 100644
--- a/rustc_deps/vendor/futures-core-preview/src/stream.rs
+++ b/rustc_deps/vendor/futures-core-preview/src/stream/mod.rs
@@ -2,11 +2,14 @@
 
 use crate::task::{self, Poll};
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 
 #[cfg(feature = "either")]
 use either::Either;
 
+mod stream_obj;
+pub use self::stream_obj::{StreamObj,LocalStreamObj,UnsafeStreamObj};
+
 /// A stream of values produced asynchronously.
 ///
 /// If `Future<Output = T>` is an asynchronous version of `T`, then `Stream<Item
@@ -125,7 +128,8 @@
 }
 
 if_std! {
-    use std::boxed::{Box, PinBox};
+    use std::boxed::Box;
+    use std::pin::PinBox;
 
     impl<S: ?Sized + Stream + Unpin> Stream for Box<S> {
         type Item = S::Item;
diff --git a/rustc_deps/vendor/futures-core-preview/src/stream/stream_obj.rs b/rustc_deps/vendor/futures-core-preview/src/stream/stream_obj.rs
new file mode 100644
index 0000000..9063f95
--- /dev/null
+++ b/rustc_deps/vendor/futures-core-preview/src/stream/stream_obj.rs
@@ -0,0 +1,258 @@
+use super::Stream;
+use crate::task::{self, Poll};
+use core::fmt;
+use core::marker::{PhantomData, Unpin};
+use core::pin::PinMut;
+
+/// A custom trait object for polling streams, roughly akin to
+/// `Box<dyn Stream<Item = T> + 'a>`.
+///
+/// This custom trait object was introduced for two reasons:
+/// - Currently it is not possible to take `dyn Trait` by value and
+///   `Box<dyn Trait>` is not available in no_std contexts.
+/// - The `Stream` trait is currently not object safe: The `Stream::poll_next`
+///   method makes uses the arbitrary self types feature and traits in which
+///   this feature is used are currently not object safe due to current compiler
+///   limitations. (See tracking issue for arbitrary self types for more
+///   information #44874)
+pub struct LocalStreamObj<'a, T> {
+    ptr: *mut (),
+    poll_next_fn: unsafe fn(*mut (), &mut task::Context) -> Poll<Option<T>>,
+    drop_fn: unsafe fn(*mut ()),
+    _marker: PhantomData<&'a ()>,
+}
+
+impl<'a, T> Unpin for LocalStreamObj<'a, T> {}
+
+impl<'a, T> LocalStreamObj<'a, T> {
+    /// Create a `LocalStreamObj` from a custom trait object representation.
+    #[inline]
+    pub fn new<F: UnsafeStreamObj<'a, T> + 'a>(f: F) -> LocalStreamObj<'a, T> {
+        LocalStreamObj {
+            ptr: f.into_raw(),
+            poll_next_fn: F::poll_next,
+            drop_fn: F::drop,
+            _marker: PhantomData,
+        }
+    }
+
+    /// Converts the `LocalStreamObj` into a `StreamObj`
+    /// To make this operation safe one has to ensure that the `UnsafeStreamObj`
+    /// instance from which this `LocalStreamObj` was created actually
+    /// implements `Send`.
+    #[inline]
+    pub unsafe fn into_stream_obj(self) -> StreamObj<'a, T> {
+        StreamObj(self)
+    }
+}
+
+impl<'a, T> fmt::Debug for LocalStreamObj<'a, T> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        f.debug_struct("LocalStreamObj").finish()
+    }
+}
+
+impl<'a, T> From<StreamObj<'a, T>> for LocalStreamObj<'a, T> {
+    #[inline]
+    fn from(f: StreamObj<'a, T>) -> LocalStreamObj<'a, T> {
+        f.0
+    }
+}
+
+impl<'a, T> Stream for LocalStreamObj<'a, T> {
+    type Item = T;
+
+    #[inline]
+    fn poll_next(
+        self: PinMut<Self>,
+        cx: &mut task::Context,
+    ) -> Poll<Option<T>> {
+        unsafe { (self.poll_next_fn)(self.ptr, cx) }
+    }
+}
+
+impl<'a, T> Drop for LocalStreamObj<'a, T> {
+    fn drop(&mut self) {
+        unsafe { (self.drop_fn)(self.ptr) }
+    }
+}
+
+/// A custom trait object for polling streams, roughly akin to
+/// `Box<dyn Stream<Item = T> + Send + 'a>`.
+///
+/// This custom trait object was introduced for two reasons:
+/// - Currently it is not possible to take `dyn Trait` by value and
+///   `Box<dyn Trait>` is not available in no_std contexts.
+/// - The `Stream` trait is currently not object safe: The `Stream::poll_next`
+///   method makes uses the arbitrary self types feature and traits in which
+///   this feature is used are currently not object safe due to current compiler
+///   limitations. (See tracking issue for arbitray self types for more
+///   information #44874)
+pub struct StreamObj<'a, T>(LocalStreamObj<'a, T>);
+
+impl<'a, T> Unpin for StreamObj<'a, T> {}
+unsafe impl<'a, T> Send for StreamObj<'a, T> {}
+
+impl<'a, T> StreamObj<'a, T> {
+    /// Create a `StreamObj` from a custom trait object representation.
+    #[inline]
+    pub fn new<F: UnsafeStreamObj<'a, T> + Send>(f: F) -> StreamObj<'a, T> {
+        StreamObj(LocalStreamObj::new(f))
+    }
+}
+
+impl<'a, T> fmt::Debug for StreamObj<'a, T> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        f.debug_struct("StreamObj").finish()
+    }
+}
+
+impl<'a, T> Stream for StreamObj<'a, T> {
+    type Item = T;
+
+    #[inline]
+    fn poll_next(
+        self: PinMut<Self>,
+        cx: &mut task::Context,
+    ) -> Poll<Option<T>> {
+        let pinned_field = unsafe { PinMut::map_unchecked(self, |x| &mut x.0) };
+        pinned_field.poll_next(cx)
+    }
+}
+
+/// A custom implementation of a stream trait object for `StreamObj`, providing
+/// a hand-rolled vtable.
+///
+/// This custom representation is typically used only in `no_std` contexts,
+/// where the default `Box`-based implementation is not available.
+///
+/// The implementor must guarantee that it is safe to call `poll_next`
+/// repeatedly (in a non-concurrent fashion) with the result of `into_raw` until
+/// `drop` is called.
+pub unsafe trait UnsafeStreamObj<'a, T>: 'a {
+    /// Convert an owned instance into a (conceptually owned) void pointer.
+    fn into_raw(self) -> *mut ();
+
+    /// Poll the stream represented by the given void pointer.
+    ///
+    /// # Safety
+    ///
+    /// The trait implementor must guarantee that it is safe to repeatedly call
+    /// `poll_next` with the result of `into_raw` until `drop` is called; such
+    /// calls are not, however, allowed to race with each other or with calls to
+    /// `drop`.
+    unsafe fn poll_next(
+        ptr: *mut (),
+        cx: &mut task::Context,
+    ) -> Poll<Option<T>>;
+
+    /// Drops the stream represented by the given void pointer.
+    ///
+    /// # Safety
+    ///
+    /// The trait implementor must guarantee that it is safe to call this
+    /// function once per `into_raw` invocation; that call cannot race with
+    /// other calls to `drop` or `poll_next`.
+    unsafe fn drop(ptr: *mut ());
+}
+
+unsafe impl<'a, T, F> UnsafeStreamObj<'a, T> for &'a mut F
+where
+    F: Stream<Item = T> + Unpin + 'a,
+{
+    fn into_raw(self) -> *mut () {
+        self as *mut F as *mut ()
+    }
+
+    unsafe fn poll_next(
+        ptr: *mut (),
+        cx: &mut task::Context,
+    ) -> Poll<Option<T>> {
+        PinMut::new_unchecked(&mut *(ptr as *mut F)).poll_next(cx)
+    }
+
+    unsafe fn drop(_ptr: *mut ()) {}
+}
+
+unsafe impl<'a, T, F> UnsafeStreamObj<'a, T> for PinMut<'a, F>
+where
+    F: Stream<Item = T> + 'a,
+{
+    fn into_raw(self) -> *mut () {
+        unsafe { PinMut::get_mut_unchecked(self) as *mut F as *mut () }
+    }
+
+    unsafe fn poll_next(
+        ptr: *mut (),
+        cx: &mut task::Context,
+    ) -> Poll<Option<T>> {
+        PinMut::new_unchecked(&mut *(ptr as *mut F)).poll_next(cx)
+    }
+
+    unsafe fn drop(_ptr: *mut ()) {}
+}
+
+if_std! {
+    use std::boxed::Box;
+    use std::pin::PinBox;
+
+    unsafe impl<'a, T, F> UnsafeStreamObj<'a, T> for Box<F>
+        where F: Stream<Item = T> + 'a
+    {
+        fn into_raw(self) -> *mut () {
+            Box::into_raw(self) as *mut ()
+        }
+
+        unsafe fn poll_next(ptr: *mut (), cx: &mut task::Context) -> Poll<Option<T>> {
+            let ptr = ptr as *mut F;
+            let pin: PinMut<F> = PinMut::new_unchecked(&mut *ptr);
+            pin.poll_next(cx)
+        }
+
+        unsafe fn drop(ptr: *mut ()) {
+            drop(Box::from_raw(ptr as *mut F))
+        }
+    }
+
+    unsafe impl<'a, T, F> UnsafeStreamObj<'a, T> for PinBox<F>
+        where F: Stream<Item = T> + 'a
+    {
+        fn into_raw(self) -> *mut () {
+            PinBox::into_raw(self) as *mut ()
+        }
+
+        unsafe fn poll_next(ptr: *mut (), cx: &mut task::Context) -> Poll<Option<T>> {
+            let ptr = ptr as *mut F;
+            let pin: PinMut<F> = PinMut::new_unchecked(&mut *ptr);
+            pin.poll_next(cx)
+        }
+
+        unsafe fn drop(ptr: *mut ()) {
+            drop(PinBox::from_raw(ptr as *mut F))
+        }
+    }
+
+    impl<'a, F: Stream<Item = ()> + Send + 'a> From<PinBox<F>> for StreamObj<'a, ()> {
+        fn from(boxed: PinBox<F>) -> Self {
+            StreamObj::new(boxed)
+        }
+    }
+
+    impl<'a, F: Stream<Item = ()> + Send + 'a> From<Box<F>> for StreamObj<'a, ()> {
+        fn from(boxed: Box<F>) -> Self {
+            StreamObj::new(boxed)
+        }
+    }
+
+    impl<'a, F: Stream<Item = ()> + 'a> From<PinBox<F>> for LocalStreamObj<'a, ()> {
+        fn from(boxed: PinBox<F>) -> Self {
+            LocalStreamObj::new(boxed)
+        }
+    }
+
+    impl<'a, F: Stream<Item = ()> + 'a> From<Box<F>> for LocalStreamObj<'a, ()> {
+        fn from(boxed: Box<F>) -> Self {
+            LocalStreamObj::new(boxed)
+        }
+    }
+}
diff --git a/rustc_deps/vendor/futures-executor-preview/.cargo-checksum.json b/rustc_deps/vendor/futures-executor-preview/.cargo-checksum.json
index c65fbcd..dadfec2 100644
--- a/rustc_deps/vendor/futures-executor-preview/.cargo-checksum.json
+++ b/rustc_deps/vendor/futures-executor-preview/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"af7105c57308bdab87e64c12c7d0a5150c714c580f1df663a6862e313a014ff5","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","benches/poll.rs":"748c62b03b025018be62ab3067e47c7a1fc07b6b5592d92f758ad9cfc356193f","benches/thread_notify.rs":"54f878d4561efdd0ff6741668050ea4ed976a16298ac95f334ebd1b6940bc18c","src/enter.rs":"96f74df35aca1de4dbec9d051482d4957ff56209e44ced6f489ac9cb15df6ba6","src/lib.rs":"351a0b90b52707958b8669ccebe76620f10e273877216cda7c6b4c4a32c85931","src/local_pool.rs":"66d5e86621725fe7d02582101bd8da52dd6b6de82be190b5170ab0083564f551","src/thread_pool.rs":"753c4a9c39f8c281eee760f84f9ac4993427738813140d75ad5378b79dc85657","src/unpark_mutex.rs":"7d37d56bd632fbd49e232e057ac55517f9714745eacc72c397aa07bb14450840","tests/local_pool.rs":"d6d6bc58d7af64efab422831659970de44c691f31d149eaddfbaa90d975bd142"},"package":"94ddf580beef58db28c6f39461f9880c0b040342c3fbee10d920092d68953b1a"}
\ No newline at end of file
+{"files":{"Cargo.toml":"34088c70ff5bcb498429c0a73c174a61456761242cc6591214d320564d1cbcd7","LICENSE-APACHE":"275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","benches/poll.rs":"ec7d3d5250b23f11845913280db51573d12724d2ceff8e0ded418a141e4a58da","benches/thread_notify.rs":"512ac7c2fb9c2de36e794a244771b6e5cea58a08bdf499d65367665b22a205e4","src/enter.rs":"96f74df35aca1de4dbec9d051482d4957ff56209e44ced6f489ac9cb15df6ba6","src/lib.rs":"54d4a7152d451d0ed0999c69ed2fae0345af4e02cdddc86a7952d122fe743283","src/local_pool.rs":"66d5e86621725fe7d02582101bd8da52dd6b6de82be190b5170ab0083564f551","src/thread_pool.rs":"753c4a9c39f8c281eee760f84f9ac4993427738813140d75ad5378b79dc85657","src/unpark_mutex.rs":"7d37d56bd632fbd49e232e057ac55517f9714745eacc72c397aa07bb14450840","tests/local_pool.rs":"25d321a43405c9a69f9a7764fa11d6d24596e61a8dd76bd35a49a143924dd270"},"package":"b2ec9bde8750c958aca25c9611f470a26f74ead847057d155a1b51b1e5013d29"}
\ No newline at end of file
diff --git a/rustc_deps/vendor/futures-executor-preview/Cargo.toml b/rustc_deps/vendor/futures-executor-preview/Cargo.toml
index cca7a2e..2569f4e 100644
--- a/rustc_deps/vendor/futures-executor-preview/Cargo.toml
+++ b/rustc_deps/vendor/futures-executor-preview/Cargo.toml
@@ -10,31 +10,29 @@
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
-cargo-features = ["edition"]
-
 [package]
+edition = "2018"
 name = "futures-executor-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 authors = ["Alex Crichton <alex@alexcrichton.com>"]
 description = "Executors for asynchronous tasks based on the futures-rs library.\n"
 homepage = "https://rust-lang-nursery.github.io/futures-rs"
-documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_executor"
+documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_executor"
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/rust-lang-nursery/futures-rs"
-edition = "2018"
 
 [lib]
 name = "futures_executor"
 [dependencies.futures-channel-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.futures-core-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.futures-util-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.lazy_static]
@@ -46,12 +44,7 @@
 optional = true
 
 [dependencies.pin-utils]
-version = "0.1.0-alpha.1"
-[dev-dependencies.futures-channel-preview]
-version = "0.3.0-alpha.3"
-
-[dev-dependencies.futures-preview]
-version = "0.3.0-alpha.3"
+version = "0.1.0-alpha.2"
 
 [features]
 default = ["std"]
diff --git a/rustc_deps/vendor/futures-executor-preview/LICENSE-APACHE b/rustc_deps/vendor/futures-executor-preview/LICENSE-APACHE
index 16fe87b..9eb0b09 100644
--- a/rustc_deps/vendor/futures-executor-preview/LICENSE-APACHE
+++ b/rustc_deps/vendor/futures-executor-preview/LICENSE-APACHE
@@ -186,7 +186,8 @@
    same "printed page" as the copyright notice for easier
    identification within third-party archives.
 
-Copyright [yyyy] [name of copyright owner]
+Copyright (c) 2016 Alex Crichton
+Copyright (c) 2017 The Tokio Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/rustc_deps/vendor/futures-executor-preview/benches/poll.rs b/rustc_deps/vendor/futures-executor-preview/benches/poll.rs
old mode 100755
new mode 100644
index 08b4c07..e46ff52
--- a/rustc_deps/vendor/futures-executor-preview/benches/poll.rs
+++ b/rustc_deps/vendor/futures-executor-preview/benches/poll.rs
@@ -4,7 +4,7 @@
 use futures::future::{Future, FutureExt};
 use futures::task::{self, Poll, Waker, LocalWaker, Wake};
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::sync::Arc;
 use test::Bencher;
 
diff --git a/rustc_deps/vendor/futures-executor-preview/benches/thread_notify.rs b/rustc_deps/vendor/futures-executor-preview/benches/thread_notify.rs
old mode 100755
new mode 100644
index 61651f0..a4e09a4
--- a/rustc_deps/vendor/futures-executor-preview/benches/thread_notify.rs
+++ b/rustc_deps/vendor/futures-executor-preview/benches/thread_notify.rs
@@ -4,7 +4,7 @@
 use futures::future::Future;
 use futures::task::{self, Poll, Waker};
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 use test::Bencher;
 
 #[bench]
diff --git a/rustc_deps/vendor/futures-executor-preview/src/lib.rs b/rustc_deps/vendor/futures-executor-preview/src/lib.rs
index 77acfc8..63f4535 100644
--- a/rustc_deps/vendor/futures-executor-preview/src/lib.rs
+++ b/rustc_deps/vendor/futures-executor-preview/src/lib.rs
@@ -7,7 +7,7 @@
 #![warn(missing_docs, missing_debug_implementations)]
 #![deny(bare_trait_objects)]
 
-#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_executor")]
+#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_executor")]
 
 macro_rules! if_std {
     ($($i:item)*) => ($(
diff --git a/rustc_deps/vendor/futures-executor-preview/tests/local_pool.rs b/rustc_deps/vendor/futures-executor-preview/tests/local_pool.rs
old mode 100755
new mode 100644
index fbd8679..a4fcee6
--- a/rustc_deps/vendor/futures-executor-preview/tests/local_pool.rs
+++ b/rustc_deps/vendor/futures-executor-preview/tests/local_pool.rs
@@ -4,9 +4,8 @@
 use futures::executor::LocalPool;
 use futures::future::{Future, lazy};
 use futures::task::{self, Poll, Spawn};
-use std::boxed::PinBox;
 use std::cell::{Cell, RefCell};
-use std::mem::PinMut;
+use std::pin::{PinBox, PinMut};
 use std::rc::Rc;
 
 struct Pending(Rc<()>);
diff --git a/rustc_deps/vendor/futures-io-preview/.cargo-checksum.json b/rustc_deps/vendor/futures-io-preview/.cargo-checksum.json
index c6abe9b..e226068 100644
--- a/rustc_deps/vendor/futures-io-preview/.cargo-checksum.json
+++ b/rustc_deps/vendor/futures-io-preview/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"65ecfaf0b77135f1bcb70a67b6119e888a41312922d2b5413e7da9914d29e022","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","src/lib.rs":"429fb5b141aa66e720b692c2ec4eae99b799ba92a00a19e492e8c07aca43afb7","tests/cursor.rs":"663dbdd2a7ac4aa21636dbe0f46e444f5c613d4afdc5aed669ecf080ed297189"},"package":"772f2d8a4109b2d57347ed8bbb5a0535896ed190a6004af23cca86db8be1311d"}
\ No newline at end of file
+{"files":{"Cargo.toml":"3fd5840e04d983fb0d342e05af8c24ece0683bfbd374d0d0e3cb564767d16a90","LICENSE-APACHE":"275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","src/lib.rs":"faa2bd6e37c248aa94e9b56c538e4fe99f16547eaf65edb81b38bd0d2455e271","tests/cursor.rs":"663dbdd2a7ac4aa21636dbe0f46e444f5c613d4afdc5aed669ecf080ed297189"},"package":"e6ff1712a0eeacacbfe09e776a39d97ab1dfb3453ad781b26b612e269f193f99"}
\ No newline at end of file
diff --git a/rustc_deps/vendor/futures-io-preview/Cargo.toml b/rustc_deps/vendor/futures-io-preview/Cargo.toml
index 42042d8..e150856 100644
--- a/rustc_deps/vendor/futures-io-preview/Cargo.toml
+++ b/rustc_deps/vendor/futures-io-preview/Cargo.toml
@@ -10,33 +10,26 @@
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
-cargo-features = ["edition"]
-
 [package]
+edition = "2018"
 name = "futures-io-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 authors = ["Alex Crichton <alex@alexcrichton.com>"]
 description = "The `AsyncRead` and `AsyncWrite` traits for the futures-rs library.\n"
 homepage = "https://rust-lang-nursery.github.io/futures-rs"
-documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_io"
+documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_io"
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/rust-lang-nursery/futures-rs"
-edition = "2018"
 
 [lib]
 name = "futures_io"
 [dependencies.futures-core-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.iovec]
 version = "0.1"
 optional = true
-[dev-dependencies.assert_matches]
-version = "1.3.0"
-
-[dev-dependencies.futures-preview]
-version = "0.3.0-alpha.3"
 
 [features]
 default = ["std"]
diff --git a/rustc_deps/vendor/futures-io-preview/LICENSE-APACHE b/rustc_deps/vendor/futures-io-preview/LICENSE-APACHE
index 16fe87b..9eb0b09 100644
--- a/rustc_deps/vendor/futures-io-preview/LICENSE-APACHE
+++ b/rustc_deps/vendor/futures-io-preview/LICENSE-APACHE
@@ -186,7 +186,8 @@
    same "printed page" as the copyright notice for easier
    identification within third-party archives.
 
-Copyright [yyyy] [name of copyright owner]
+Copyright (c) 2016 Alex Crichton
+Copyright (c) 2017 The Tokio Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/rustc_deps/vendor/futures-io-preview/src/lib.rs b/rustc_deps/vendor/futures-io-preview/src/lib.rs
index 9a7b6e5..7837bd2 100644
--- a/rustc_deps/vendor/futures-io-preview/src/lib.rs
+++ b/rustc_deps/vendor/futures-io-preview/src/lib.rs
@@ -9,7 +9,7 @@
 #![warn(missing_docs, missing_debug_implementations)]
 #![deny(bare_trait_objects)]
 
-#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_io")]
+#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_io")]
 
 #![feature(futures_api)]
 
diff --git a/rustc_deps/vendor/futures-preview/.cargo-checksum.json b/rustc_deps/vendor/futures-preview/.cargo-checksum.json
index 1401563..fdb8351 100644
--- a/rustc_deps/vendor/futures-preview/.cargo-checksum.json
+++ b/rustc_deps/vendor/futures-preview/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"7f75243b3a9f855130572f875986f5cd30918f782b9f0f821c8e251d7f75998c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","src/lib.rs":"bb88f46de3489a91d85e4fa519202277bfd36378e9f054ebfb8b95efdbe856d6","tests/abortable.rs":"44a213c13c3aa68dc6535bddd8cdfdd9f908dd2ac29db2974bce8340a667abde","tests/async_await_macros.rs":"6619f5eb147fd0231021204e3c0416b5b93545f0fad7ed746d5e70bc00c30aa5","tests/basic_combinators.rs":"2edd82ce0109531df4a1957651ad9a1b3deb1569cb26d3c4cf03f59def1e5bd5","tests/eager_drop.rs":"7c62e39e004a59677c1b3c71724ed00a42190f1eeb697e2391bee05dba59ec1c","tests/fuse.rs":"eb2fba5899b7f5e5c7bc8914e882ba6b8caf9bf694b3b26654a1096b02a600f4","tests/futures_ordered.rs":"e3a01bc02237b7d76760c9d52bb26f954365ba262802ed11c5e32bbede250211","tests/futures_unordered.rs":"c667880f9e43e07c8b3f09f5c550d06f4f4bda59cb774560785f689709296a10","tests/inspect.rs":"d08edcd38e0ec597e5ff9a04ad2c1aa1074a41c84070dc65e224e862a8613a32","tests/io_read_exact.rs":"250a3c900f63d0aaf225ad28b6c3222caac9873a0eae2a3f17d1a6d288c3ac07","tests/oneshot.rs":"492561e9b510488b8b035041006ae2ca35968a15f150d8343ad73decc7b147a6","tests/recurse.rs":"3b72759ed2a0f81d2586d6768b21debe2783755b4137877dac54913f3a7ef623","tests/shared.rs":"ef223b43ff05f07387b4f7f477088a83d72495a12b67ada53b69a82087f4fa9e","tests/split.rs":"84565f5db096a5b7446acb241a45bcf5688a4e4018b53f67df63adf7d5e9d615","tests/support/assert.rs":"cdd71f2cc2924d12f7f10df4c523125fb54e37f93f7f8525fb460861fbdd0843","tests/support/counter_waker_context.rs":"f05429a517cc20d3f99c2f0cccbe819b2adba42c1753a0fbfbe84423403ca244","tests/support/delayed.rs":"dee476fd065766e75eb08c9698c7b2b515bc0603becd0b059f56c404d862ff3b","tests/support/mod.rs":"fcfcc5ba5b2ff64571fe77ec316e79775fef6f4f455a66d801a0497a8364ee5e","tests/support/noop_waker_context.rs":"0e1245ec9390ea28c856142564e9cc20c568f938c322973869df6536fe3966b9","tests/support/panic_executor.rs":"6ba83b37165dcffc5183f02e64911593c3ffffc974e03d480d2de20315f546e1","tests/support/panic_waker_context.rs":"e62cfb83db4b60b5a519e48ef7ad2580f6ed1387c39b1c411077ca8ac071b1df","tests/support/run_in_background.rs":"ee9bbad67aaf5a7a9ec4165769dc7eee0f83083bc6b28683020b4513056cfa65","tests/unfold.rs":"ad1584e18de8cfa86908d76274db59b4e1a9cf38035d1f1bafcd5dcba158a5fe","tests_disabled/all.rs":"6f902a5c993915c8d3cf6c5911b1f89cc88719e7e34d1331d7dc2f61f00ab204","tests_disabled/async_await/elisions.rs":"629be3760ef4e40365572f7dff19770b084171eae25019b88c4c2e5280fb189d","tests_disabled/async_await/mod.rs":"b821c40b8a01df25b577dedc76a4c0fab7e3026f2e0f666a33853fb10fb082c8","tests_disabled/async_await/pinned.rs":"c2e32cdd004032457e0b889f0e61ee5d1719603208c14bc99d0d89a126e1dd7d","tests_disabled/async_await/smoke.rs":"baf44520e8e9e39a1093e1769fdce0ebf4e5afcc4abf75f03f072a597b19734c","tests_disabled/async_await_tests.rs":"1782badb827c2822b8d3aba2172222f190eb7b8daf1ef9482240f38c314e29ce","tests_disabled/buffer_unordered.rs":"ad2b1a78b16bd87e412d25d3e387c7cc4495e585619d35c5a2b7087dac376922","tests_disabled/eventual.rs":"fd2456c07be6372e5f35a56db9e5a54eab844dae27c03e86772a8203a2184a76","tests_disabled/future_flatten_stream.rs":"2d922c1cd064f60eacd7aad629c58f32471a927172cbe5c7d1462e99edc46578","tests_disabled/ready_queue.rs":"fb73795ff67f46703bc752371ebc63ce4ef8925de0e11f442f38dacdb7d6c3a8","tests_disabled/select_all.rs":"77dac9d9609f76abfa1078c74cd4643fad2e379f1de43abe46e13e54e8ec20ea","tests_disabled/select_ok.rs":"2fb035c4880ef4851a12e826ca05b9caad4eadc4b50df88a42ea5f66344d5041","tests_disabled/sink.rs":"4a27ebe18f0a51a61c2cf91b5f3d6817c48044cfa54aa422dac1b07997746d04","tests_disabled/stream.rs":"5efa8884ca73b0d7a7d59a0b2aaf2545a743ee8de66d88b1e932fa24c97890ad","tests_disabled/stream_catch_unwind.rs":"a0a41d07f1caf9544e830ac7e5dcfb991c99fdb997b855cb288de74f25c7e1f3","tests_disabled/stream_select_all.rs":"3caf33401e9dbb69dbbc3a6b701fb495bffaccbf3e854fa5a5346a61bb11e193"},"package":"38810750d882eaa4be290c295c70230e1e724ae6c594261721fb51073cbbb6d8"}
\ No newline at end of file
+{"files":{"Cargo.toml":"ab64f1fe15191d9691160f5f8c1ced82773f746c78c2aa8d8d61a2b9c923f8a2","LICENSE-APACHE":"275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","src/lib.rs":"9f3df4581b786f3c8e1c178fce3c95cb914d09f7df0e29d4c1e8572e3e01c66a","tests/abortable.rs":"a95df504e4312fe232162325d91b41d865e1cf009df56742e307a9a393806468","tests/async_await_macros.rs":"6619f5eb147fd0231021204e3c0416b5b93545f0fad7ed746d5e70bc00c30aa5","tests/basic_combinators.rs":"9f2c9dcbbcec0aa55413fd1cffa3c04a2a6a661d2fa22cd422a270bc71ffd629","tests/eager_drop.rs":"b1375cf16d4b4d4ec02da3dd02afc4050a13f0e7058959474a209ed9f381b3aa","tests/fuse.rs":"b04f46722d1382d984d191768d5df626a5b98ec37c13d83d62abc8ed88ba79e7","tests/futures_ordered.rs":"d4899f9f562d23e0a72b09952eabd025f5451e914a73b25caacba0150d0f91d0","tests/futures_unordered.rs":"b14b9c056b8ea819d15dea1fddc9085b52bf8b9beb9471528f15c0a89c2dc8b5","tests/inspect.rs":"d08edcd38e0ec597e5ff9a04ad2c1aa1074a41c84070dc65e224e862a8613a32","tests/io_read_exact.rs":"250a3c900f63d0aaf225ad28b6c3222caac9873a0eae2a3f17d1a6d288c3ac07","tests/oneshot.rs":"88decfc791b19896c78cb8a6ad2f04c18d0765cd3bc12cd6136b3314e11b6970","tests/recurse.rs":"3b72759ed2a0f81d2586d6768b21debe2783755b4137877dac54913f3a7ef623","tests/shared.rs":"f0a8cc9a73febb6e22003e72376aa889e03badbf042a1ee152801c27065bf189","tests/split.rs":"898817bb920f47859bba652a92e3a5112504f07e8d8d592c3681a28145262ed9","tests/unfold.rs":"8b01edaa45034968de428592bed6076b797d091dc23845873253c38e2f5f4ed4","tests_disabled/all.rs":"6f902a5c993915c8d3cf6c5911b1f89cc88719e7e34d1331d7dc2f61f00ab204","tests_disabled/async_await/elisions.rs":"629be3760ef4e40365572f7dff19770b084171eae25019b88c4c2e5280fb189d","tests_disabled/async_await/mod.rs":"b821c40b8a01df25b577dedc76a4c0fab7e3026f2e0f666a33853fb10fb082c8","tests_disabled/async_await/pinned.rs":"c2e32cdd004032457e0b889f0e61ee5d1719603208c14bc99d0d89a126e1dd7d","tests_disabled/async_await/smoke.rs":"baf44520e8e9e39a1093e1769fdce0ebf4e5afcc4abf75f03f072a597b19734c","tests_disabled/async_await_tests.rs":"1782badb827c2822b8d3aba2172222f190eb7b8daf1ef9482240f38c314e29ce","tests_disabled/buffer_unordered.rs":"ad2b1a78b16bd87e412d25d3e387c7cc4495e585619d35c5a2b7087dac376922","tests_disabled/eventual.rs":"fd2456c07be6372e5f35a56db9e5a54eab844dae27c03e86772a8203a2184a76","tests_disabled/future_flatten_stream.rs":"2d922c1cd064f60eacd7aad629c58f32471a927172cbe5c7d1462e99edc46578","tests_disabled/ready_queue.rs":"fb73795ff67f46703bc752371ebc63ce4ef8925de0e11f442f38dacdb7d6c3a8","tests_disabled/select_all.rs":"77dac9d9609f76abfa1078c74cd4643fad2e379f1de43abe46e13e54e8ec20ea","tests_disabled/select_ok.rs":"2fb035c4880ef4851a12e826ca05b9caad4eadc4b50df88a42ea5f66344d5041","tests_disabled/sink.rs":"4a27ebe18f0a51a61c2cf91b5f3d6817c48044cfa54aa422dac1b07997746d04","tests_disabled/stream.rs":"5efa8884ca73b0d7a7d59a0b2aaf2545a743ee8de66d88b1e932fa24c97890ad","tests_disabled/stream_catch_unwind.rs":"a0a41d07f1caf9544e830ac7e5dcfb991c99fdb997b855cb288de74f25c7e1f3","tests_disabled/stream_select_all.rs":"3caf33401e9dbb69dbbc3a6b701fb495bffaccbf3e854fa5a5346a61bb11e193"},"package":"f2f94727f00f38d14a925c874e0ea68c92ffe212a0f36b41112631a089294056"}
\ No newline at end of file
diff --git a/rustc_deps/vendor/futures-preview/Cargo.toml b/rustc_deps/vendor/futures-preview/Cargo.toml
index 45338ea..d0f7c69 100644
--- a/rustc_deps/vendor/futures-preview/Cargo.toml
+++ b/rustc_deps/vendor/futures-preview/Cargo.toml
@@ -10,49 +10,45 @@
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
-cargo-features = ["edition"]
-
 [package]
+edition = "2018"
 name = "futures-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 authors = ["Alex Crichton <alex@alexcrichton.com>"]
 description = "An implementation of futures and streams featuring zero allocations,\ncomposability, and iterator-like interfaces.\n"
 homepage = "https://rust-lang-nursery.github.io/futures-rs"
-documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures"
+documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures"
 readme = "../README.md"
 keywords = ["futures", "async", "future"]
 categories = ["asynchronous"]
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/rust-lang-nursery/futures-rs"
-edition = "2018"
 
 [lib]
 name = "futures"
 [dependencies.futures-channel-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.futures-core-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.futures-executor-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.futures-io-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.futures-sink-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.futures-util-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
-[dev-dependencies.pin-utils]
-version = "0.1.0-alpha.1"
 
 [features]
 compat = ["std", "futures-util-preview/compat"]
diff --git a/rustc_deps/vendor/futures-preview/LICENSE-APACHE b/rustc_deps/vendor/futures-preview/LICENSE-APACHE
index 16fe87b..9eb0b09 100644
--- a/rustc_deps/vendor/futures-preview/LICENSE-APACHE
+++ b/rustc_deps/vendor/futures-preview/LICENSE-APACHE
@@ -186,7 +186,8 @@
    same "printed page" as the copyright notice for easier
    identification within third-party archives.
 
-Copyright [yyyy] [name of copyright owner]
+Copyright (c) 2016 Alex Crichton
+Copyright (c) 2017 The Tokio Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/rustc_deps/vendor/futures-preview/src/lib.rs b/rustc_deps/vendor/futures-preview/src/lib.rs
index e2bc50a..cd02b3e 100644
--- a/rustc_deps/vendor/futures-preview/src/lib.rs
+++ b/rustc_deps/vendor/futures-preview/src/lib.rs
@@ -28,7 +28,7 @@
 #![warn(missing_docs, missing_debug_implementations)]
 #![deny(bare_trait_objects)]
 
-#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures")]
+#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures")]
 
 #![cfg_attr(feature = "nightly", feature(cfg_target_has_atomic))]
 
@@ -79,7 +79,6 @@
 #[cfg(feature = "compat")]
 pub mod compat {
     //! Interop between `futures` 0.1 and 0.3.
-    //!
 
     pub use futures_util::compat::{
         Compat,
@@ -91,7 +90,7 @@
     };
 
     #[cfg(feature = "tokio-compat")]
-    pub use futures_util::compat::TokioDefaultSpawn;
+    pub use futures_util::compat::TokioDefaultSpawner;
 }
 
 #[cfg(feature = "std")]
@@ -188,7 +187,7 @@
         lazy, Lazy,
         maybe_done, MaybeDone,
         poll_fn, PollFn,
-        ready, Ready,
+        ready, ok, err, Ready,
 
         OptionFuture,
 
@@ -299,7 +298,10 @@
     //!   [`futures_unordered`](crate::stream::futures_unordered()), which
     //!   constructs a stream from a collection of futures.
 
-    pub use futures_core::stream::{Stream, TryStream};
+    pub use futures_core::stream::{
+        Stream, TryStream,
+        StreamObj, LocalStreamObj, UnsafeStreamObj
+    };
 
     pub use futures_util::stream::{
         iter, Iter,
diff --git a/rustc_deps/vendor/futures-preview/tests/abortable.rs b/rustc_deps/vendor/futures-preview/tests/abortable.rs
index fc93686..4b1bf3b 100644
--- a/rustc_deps/vendor/futures-preview/tests/abortable.rs
+++ b/rustc_deps/vendor/futures-preview/tests/abortable.rs
@@ -1,13 +1,10 @@
 #![feature(pin, arbitrary_self_types, futures_api)]
 
-use futures::FutureExt;
 use futures::channel::oneshot;
 use futures::executor::block_on;
-use futures::future::{abortable, Aborted};
+use futures::future::{abortable, Aborted, FutureExt};
 use futures::task::Poll;
-
-mod support;
-use self::support::with_counter_waker_context;
+use futures_test::task::{panic_context, WakeCounter};
 
 #[test]
 fn abortable_works() {
@@ -23,14 +20,15 @@
     let (_tx, a_rx) = oneshot::channel::<()>();
     let (mut abortable_rx, abort_handle) = abortable(a_rx);
 
-    with_counter_waker_context(|cx, counter| {
-        assert_eq!(0, counter.get());
-        assert_eq!(Poll::Pending, abortable_rx.poll_unpin(cx));
-        assert_eq!(0, counter.get());
-        abort_handle.abort();
-        assert_eq!(1, counter.get());
-        assert_eq!(Poll::Ready(Err(Aborted)), abortable_rx.poll_unpin(cx));
-    })
+    let wake_counter = WakeCounter::new();
+    let mut cx = panic_context();
+    let cx = &mut cx.with_waker(wake_counter.local_waker());
+    assert_eq!(0, wake_counter.count());
+    assert_eq!(Poll::Pending, abortable_rx.poll_unpin(cx));
+    assert_eq!(0, wake_counter.count());
+    abort_handle.abort();
+    assert_eq!(1, wake_counter.count());
+    assert_eq!(Poll::Ready(Err(Aborted)), abortable_rx.poll_unpin(cx));
 }
 
 #[test]
diff --git a/rustc_deps/vendor/futures-preview/tests/basic_combinators.rs b/rustc_deps/vendor/futures-preview/tests/basic_combinators.rs
index cff77a4..e370a05 100644
--- a/rustc_deps/vendor/futures-preview/tests/basic_combinators.rs
+++ b/rustc_deps/vendor/futures-preview/tests/basic_combinators.rs
@@ -1,11 +1,9 @@
 #![feature(pin, arbitrary_self_types, futures_api)]
 
 use futures::future::{self, FutureExt, TryFutureExt};
+use futures_test::future::FutureTestExt;
 use std::sync::mpsc;
 
-mod support;
-use self::support::RunInBackgroundExt;
-
 #[test]
 fn basic_future_combinators() {
     let (tx1, rx) = mpsc::channel();
diff --git a/rustc_deps/vendor/futures-preview/tests/eager_drop.rs b/rustc_deps/vendor/futures-preview/tests/eager_drop.rs
index 2b97b7b..8ee5473 100644
--- a/rustc_deps/vendor/futures-preview/tests/eager_drop.rs
+++ b/rustc_deps/vendor/futures-preview/tests/eager_drop.rs
@@ -3,13 +3,11 @@
 use futures::channel::oneshot;
 use futures::future::{self, Future, FutureExt, TryFutureExt};
 use futures::task::{self, Poll};
+use futures_test::future::FutureTestExt;
 use pin_utils::unsafe_pinned;
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::sync::mpsc;
 
-mod support;
-use self::support::RunInBackgroundExt;
-
 #[test]
 fn map_ok() {
     // The closure given to `map_ok` should have been dropped by the time `map`
diff --git a/rustc_deps/vendor/futures-preview/tests/fuse.rs b/rustc_deps/vendor/futures-preview/tests/fuse.rs
index 67c672e..1c7d8e5 100644
--- a/rustc_deps/vendor/futures-preview/tests/fuse.rs
+++ b/rustc_deps/vendor/futures-preview/tests/fuse.rs
@@ -1,14 +1,12 @@
 #![feature(pin, arbitrary_self_types, futures_api)]
 
 use futures::future::{self, FutureExt};
-
-mod support;
+use futures_test::task::panic_context;
 
 #[test]
 fn fuse() {
     let mut future = future::ready::<i32>(2).fuse();
-    support::with_panic_waker_context(|cx| {
-        assert!(future.poll_unpin(cx).is_ready());
-        assert!(future.poll_unpin(cx).is_pending());
-    })
+    let cx = &mut panic_context();
+    assert!(future.poll_unpin(cx).is_ready());
+    assert!(future.poll_unpin(cx).is_pending());
 }
diff --git a/rustc_deps/vendor/futures-preview/tests/futures_ordered.rs b/rustc_deps/vendor/futures-preview/tests/futures_ordered.rs
index a98a32d..8389feb 100644
--- a/rustc_deps/vendor/futures-preview/tests/futures_ordered.rs
+++ b/rustc_deps/vendor/futures-preview/tests/futures_ordered.rs
@@ -4,8 +4,7 @@
 use futures::executor::{block_on, block_on_stream};
 use futures::future::{self, FutureExt, FutureObj};
 use futures::stream::{StreamExt, futures_ordered, FuturesOrdered};
-
-mod support;
+use futures_test::task::no_spawn_context;
 
 #[test]
 fn works_1() {
@@ -16,9 +15,7 @@
     let mut stream = futures_ordered(vec![a_rx, b_rx, c_rx]);
 
     b_tx.send(99).unwrap();
-    support::with_noop_waker_context(|cx| {
-        assert!(stream.poll_next_unpin(cx).is_pending());
-    });
+    assert!(stream.poll_next_unpin(&mut no_spawn_context()).is_pending());
 
     a_tx.send(33).unwrap();
     c_tx.send(33).unwrap();
@@ -41,14 +38,13 @@
         FutureObj::new(Box::new(b_rx.join(c_rx).map(|(a, b)| Ok(a? + b?)))),
     ]);
 
-    support::with_noop_waker_context(|cx| {
-        a_tx.send(33).unwrap();
-        b_tx.send(33).unwrap();
-        assert!(stream.poll_next_unpin(cx).is_ready());
-        assert!(stream.poll_next_unpin(cx).is_pending());
-        c_tx.send(33).unwrap();
-        assert!(stream.poll_next_unpin(cx).is_ready());
-    })
+    let cx = &mut no_spawn_context();
+    a_tx.send(33).unwrap();
+    b_tx.send(33).unwrap();
+    assert!(stream.poll_next_unpin(cx).is_ready());
+    assert!(stream.poll_next_unpin(cx).is_pending());
+    c_tx.send(33).unwrap();
+    assert!(stream.poll_next_unpin(cx).is_ready());
 }
 
 #[test]
@@ -74,7 +70,7 @@
         Box::new(b_rx.select(c_rx).then(|res| Ok(Box::new(res) as Box<Any+Send>))) as _,
     ]);
 
-    support::with_noop_waker_context(f)(|cx| {
+    with_no_spawn_context(|cx| {
         for _ in 0..10 {
             assert!(stream.poll_next(cx).unwrap().is_pending());
         }
diff --git a/rustc_deps/vendor/futures-preview/tests/futures_unordered.rs b/rustc_deps/vendor/futures-preview/tests/futures_unordered.rs
index de958c9..a61adfa 100644
--- a/rustc_deps/vendor/futures-preview/tests/futures_unordered.rs
+++ b/rustc_deps/vendor/futures-preview/tests/futures_unordered.rs
@@ -5,10 +5,11 @@
 use futures::future::{self, FutureExt, FutureObj};
 use futures::stream::{StreamExt, futures_unordered, FuturesUnordered};
 use futures::task::Poll;
+use futures_test::{assert_stream_done, assert_stream_next};
+use futures_test::future::FutureTestExt;
+use futures_test::task::no_spawn_context;
 use std::boxed::Box;
 
-mod support;
-
 #[test]
 fn works_1() {
     let (a_tx, a_rx) = oneshot::channel::<i32>();
@@ -40,12 +41,12 @@
 
     a_tx.send(9).unwrap();
     b_tx.send(10).unwrap();
-    support::with_noop_waker_context(|cx| {
-        assert_eq!(stream.poll_next_unpin(cx), Poll::Ready(Some(Ok(9))));
-        c_tx.send(20).unwrap();
-        assert_eq!(stream.poll_next_unpin(cx), Poll::Ready(Some(Ok(30))));
-        assert_eq!(stream.poll_next_unpin(cx), Poll::Ready(None));
-    })
+
+    let cx = &mut no_spawn_context();
+    assert_eq!(stream.poll_next_unpin(cx), Poll::Ready(Some(Ok(9))));
+    c_tx.send(20).unwrap();
+    assert_eq!(stream.poll_next_unpin(cx), Poll::Ready(Some(Ok(30))));
+    assert_eq!(stream.poll_next_unpin(cx), Poll::Ready(None));
 }
 
 #[test]
@@ -126,3 +127,15 @@
     assert_eq!(iter_mut.len(), 0);
     assert!(iter_mut.next().is_none());
 }
+
+#[test]
+fn futures_not_moved_after_poll() {
+    // Future that will be ready after being polled twice,
+    // asserting that it does not move.
+    let fut = future::ready(()).pending_once().assert_unmoved();
+    let mut stream = futures_unordered(vec![fut; 3]);
+    assert_stream_next!(stream, ());
+    assert_stream_next!(stream, ());
+    assert_stream_next!(stream, ());
+    assert_stream_done!(stream);
+}
diff --git a/rustc_deps/vendor/futures-preview/tests/oneshot.rs b/rustc_deps/vendor/futures-preview/tests/oneshot.rs
index b74a7c1..956680f 100644
--- a/rustc_deps/vendor/futures-preview/tests/oneshot.rs
+++ b/rustc_deps/vendor/futures-preview/tests/oneshot.rs
@@ -2,12 +2,10 @@
 
 use futures::channel::oneshot;
 use futures::future::{FutureExt, TryFutureExt};
+use futures_test::future::FutureTestExt;
 use std::sync::mpsc;
 use std::thread;
 
-mod support;
-use self::support::RunInBackgroundExt;
-
 #[test]
 fn oneshot_send1() {
     let (tx1, rx1) = oneshot::channel::<i32>();
diff --git a/rustc_deps/vendor/futures-preview/tests/shared.rs b/rustc_deps/vendor/futures-preview/tests/shared.rs
index 8476938..114eead 100644
--- a/rustc_deps/vendor/futures-preview/tests/shared.rs
+++ b/rustc_deps/vendor/futures-preview/tests/shared.rs
@@ -82,7 +82,7 @@
     let future2 = LocalFutureObj::new(Box::new(future1.clone()));
     slot1.replace(Some(future2));
 
-    assert_eq!(*block_on(future1), 1);
+    assert_eq!(block_on(future1), 1);
 }
 
 #[test]
@@ -111,6 +111,6 @@
     spawn.spawn_local_obj(LocalFutureObj::new(Box::new(f1.map(|_| ())))).unwrap();
     local_pool.run(spawn);
     for _ in 0..2 {
-        assert_eq!(*f2.peek().unwrap(), Ok(42));
+        assert_eq!(f2.peek().unwrap(), Ok(42));
     }
 }
diff --git a/rustc_deps/vendor/futures-preview/tests/split.rs b/rustc_deps/vendor/futures-preview/tests/split.rs
index cb84190..7f4c0f4 100644
--- a/rustc_deps/vendor/futures-preview/tests/split.rs
+++ b/rustc_deps/vendor/futures-preview/tests/split.rs
@@ -5,7 +5,7 @@
 use futures::stream::{self, Stream, StreamExt};
 use futures::task::{self, Poll};
 use pin_utils::unsafe_pinned;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 struct Join<T, U> {
     stream: T,
diff --git a/rustc_deps/vendor/futures-preview/tests/support/assert.rs b/rustc_deps/vendor/futures-preview/tests/support/assert.rs
deleted file mode 100644
index d72a6fb..0000000
--- a/rustc_deps/vendor/futures-preview/tests/support/assert.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-use futures::stream::Stream;
-use futures::task::Poll;
-use std::fmt;
-use std::mem::PinMut;
-
-use super::{with_noop_waker_context, with_panic_waker_context};
-
-pub fn assert_stream_pending<S: Stream>(stream: PinMut<S>) {
-    with_noop_waker_context(|cx| {
-        match stream.poll_next(cx) {
-            Poll::Ready(_) => panic!("stream is not pending"),
-            Poll::Pending => {},
-        }
-    })
-}
-
-pub fn assert_stream_next<S: Stream>(stream: PinMut<S>, item: S::Item)
-    where S::Item: Eq + fmt::Debug
-{
-    with_panic_waker_context(|cx| {
-        match stream.poll_next(cx) {
-            Poll::Ready(Some(x)) => assert_eq!(x, item),
-            Poll::Ready(None) => panic!("stream is at its end"),
-            Poll::Pending => panic!("stream wasn't ready"),
-        }
-    })
-}
-
-pub fn assert_stream_done<S: Stream>(stream: PinMut<S>)
-{
-    with_panic_waker_context(|cx| {
-        match stream.poll_next(cx) {
-            Poll::Ready(Some(_)) => panic!("stream had more elements"),
-            Poll::Ready(None) => {},
-            Poll::Pending => panic!("stream wasn't ready"),
-        }
-    })
-}
diff --git a/rustc_deps/vendor/futures-preview/tests/support/counter_waker_context.rs b/rustc_deps/vendor/futures-preview/tests/support/counter_waker_context.rs
deleted file mode 100644
index 1a875ac..0000000
--- a/rustc_deps/vendor/futures-preview/tests/support/counter_waker_context.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-use super::panic_executor::PanicExecutor;
-use futures::task::{self, Wake};
-use std::sync::Arc;
-use std::sync::atomic::{AtomicUsize, Ordering};
-
-pub struct CounterWaker(AtomicUsize);
-
-impl CounterWaker {
-    pub fn get(&self) -> usize {
-        self.0.load(Ordering::SeqCst)
-    }
-
-    pub fn set(&self, x: usize) {
-        self.0.store(x, Ordering::SeqCst)
-    }
-}
-
-pub fn with_counter_waker_context<F, R>(f: F) -> R
-    where F: FnOnce(&mut task::Context, &Arc<CounterWaker>) -> R
-{
-    impl Wake for CounterWaker {
-        fn wake(arc_self: &Arc<Self>) {
-            arc_self.0.fetch_add(1, Ordering::SeqCst);
-        }
-    }
-
-    let counter_arc = Arc::new(CounterWaker(AtomicUsize::new(0)));
-    let counter_waker = unsafe { task::local_waker_ref(&counter_arc) };
-    let exec = &mut PanicExecutor;
-
-    let cx = &mut task::Context::new(&counter_waker, exec);
-    f(cx, &counter_arc)
-}
diff --git a/rustc_deps/vendor/futures-preview/tests/support/delayed.rs b/rustc_deps/vendor/futures-preview/tests/support/delayed.rs
deleted file mode 100644
index 82c7ed9..0000000
--- a/rustc_deps/vendor/futures-preview/tests/support/delayed.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-use futures::future::Future;
-use futures::task::{self, Poll};
-use pin_utils::{unsafe_pinned, unsafe_unpinned};
-use std::mem::PinMut;
-
-pub struct Delayed<F> {
-    future: F,
-    polled_before: bool
-}
-
-impl<F> Delayed<F> {
-    unsafe_pinned!(future: F);
-    unsafe_unpinned!(polled_before: bool);
-}
-
-impl<F: Future> Future for Delayed<F> {
-    type Output = F::Output;
-
-    fn poll(mut self: PinMut<Self>, cx: &mut task::Context) -> Poll<F::Output> {
-        if *self.polled_before() {
-            self.future().poll(cx)
-        } else {
-            *self.polled_before() = true;
-            cx.waker().wake();
-            Poll::Pending
-        }
-    }
-}
-
-/// Introduces one `Poll::Pending` before polling the given future
-pub fn delayed<F>(future: F) -> Delayed<F>
-    where F: Future,
-{
-    Delayed { future, polled_before: false }
-}
diff --git a/rustc_deps/vendor/futures-preview/tests/support/mod.rs b/rustc_deps/vendor/futures-preview/tests/support/mod.rs
deleted file mode 100644
index 1a501c0..0000000
--- a/rustc_deps/vendor/futures-preview/tests/support/mod.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-#![allow(dead_code)]
-
-pub mod assert;
-
-mod delayed;
-pub use self::delayed::{delayed, Delayed};
-
-mod run_in_background;
-pub use self::run_in_background::RunInBackgroundExt;
-
-mod counter_waker_context;
-pub use self::counter_waker_context::with_counter_waker_context;
-
-mod noop_waker_context;
-pub use self::noop_waker_context::with_noop_waker_context;
-
-mod panic_executor;
-
-mod panic_waker_context;
-pub use self::panic_waker_context::with_panic_waker_context;
-
-
-// pub fn f_ok(a: i32) -> FutureResult<i32, u32> { Ok(a).into_future() }
-// pub fn f_err(a: u32) -> FutureResult<i32, u32> { Err(a).into_future() }
-// pub fn r_ok(a: i32) -> Result<i32, u32> { Ok(a) }
-// pub fn r_err(a: u32) -> Result<i32, u32> { Err(a) }
-
-// pub fn assert_done<T, F>(f: F, result: Result<T::Item, T::Error>)
-//     where T: Future,
-//           T::Item: Eq + fmt::Debug,
-//           T::Error: Eq + fmt::Debug,
-//           F: FnOnce() -> T,
-// {
-//     assert_eq!(block_on(f()), result);
-// }
-
-// pub fn assert_empty<T: Future, F: FnMut() -> T>(mut f: F)
-//     where T::Error: Debug
-// {
-//     panic_waker_cx(|cx| {
-//         assert!(f().poll(cx).unwrap().is_pending())
-//     })
-// }
-
diff --git a/rustc_deps/vendor/futures-preview/tests/support/noop_waker_context.rs b/rustc_deps/vendor/futures-preview/tests/support/noop_waker_context.rs
deleted file mode 100644
index 44cfed0..0000000
--- a/rustc_deps/vendor/futures-preview/tests/support/noop_waker_context.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-use super::panic_executor::PanicExecutor;
-use futures::task::{self, Wake};
-use std::sync::Arc;
-
-pub fn with_noop_waker_context<F, R>(f: F) -> R
-    where F: FnOnce(&mut task::Context) -> R
-{
-    struct NoopWake;
-
-    impl Wake for NoopWake {
-        fn wake(_: &Arc<Self>) {}
-    }
-
-    let noop_waker = unsafe { task::local_waker(Arc::new(NoopWake)) };
-    let exec = &mut PanicExecutor;
-
-    let cx = &mut task::Context::new(&noop_waker, exec);
-    f(cx)
-}
diff --git a/rustc_deps/vendor/futures-preview/tests/support/panic_executor.rs b/rustc_deps/vendor/futures-preview/tests/support/panic_executor.rs
deleted file mode 100644
index 9af8214..0000000
--- a/rustc_deps/vendor/futures-preview/tests/support/panic_executor.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-use futures::future::FutureObj;
-use futures::task::{Spawn, SpawnObjError};
-
-pub struct PanicExecutor;
-
-impl Spawn for PanicExecutor {
-    fn spawn_obj(&mut self, _: FutureObj<'static, ()>) -> Result<(), SpawnObjError> {
-        panic!("should not spawn")
-    }
-}
diff --git a/rustc_deps/vendor/futures-preview/tests/support/panic_waker_context.rs b/rustc_deps/vendor/futures-preview/tests/support/panic_waker_context.rs
deleted file mode 100644
index 134c536..0000000
--- a/rustc_deps/vendor/futures-preview/tests/support/panic_waker_context.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-use super::panic_executor::PanicExecutor;
-use futures::task::{self, Wake};
-use std::sync::Arc;
-
-pub fn with_panic_waker_context<F, R>(f: F) -> R
-    where F: FnOnce(&mut task::Context) -> R
-{
-    struct PanicWake;
-
-    impl Wake for PanicWake {
-        fn wake(_: &Arc<Self>) {
-            panic!("should not be woken");
-        }
-    }
-
-    let panic_waker = unsafe { task::local_waker(Arc::new(PanicWake)) };
-    let exec = &mut PanicExecutor;
-
-    let cx = &mut task::Context::new(&panic_waker, exec);
-    f(cx)
-}
diff --git a/rustc_deps/vendor/futures-preview/tests/support/run_in_background.rs b/rustc_deps/vendor/futures-preview/tests/support/run_in_background.rs
deleted file mode 100644
index 16634b1..0000000
--- a/rustc_deps/vendor/futures-preview/tests/support/run_in_background.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-use futures::executor::block_on;
-use futures::future::Future;
-use std::thread;
-
-pub trait RunInBackgroundExt {
-    fn run_in_background(self);
-}
-
-impl<F> RunInBackgroundExt for F
-    where F: Future + Sized + Send + 'static,
-          F::Output: Send,
-{
-    fn run_in_background(self) {
-        thread::spawn(|| block_on(self));
-    }
-}
diff --git a/rustc_deps/vendor/futures-preview/tests/unfold.rs b/rustc_deps/vendor/futures-preview/tests/unfold.rs
index d7f15d8..7d5719f 100644
--- a/rustc_deps/vendor/futures-preview/tests/unfold.rs
+++ b/rustc_deps/vendor/futures-preview/tests/unfold.rs
@@ -2,37 +2,36 @@
 
 use futures::future;
 use futures::stream;
-use pin_utils::pin_mut;
 
-mod support;
-use self::support::assert::*;
+use futures_test::{
+    assert_stream_pending, assert_stream_next, assert_stream_done,
+};
+use futures_test::future::FutureTestExt;
 
 #[test]
 fn unfold1() {
-    let stream = stream::unfold(0, |state| {
+    let mut stream = stream::unfold(0, |state| {
         if state <= 2 {
-            support::delayed(future::ready(Some((state * 2, state + 1))))
+            future::ready(Some((state * 2, state + 1))).pending_once()
         } else {
-            support::delayed(future::ready(None))
+            future::ready(None).pending_once()
         }
     });
 
-    pin_mut!(stream);
-
     // Creates the future with the closure
     // Not ready (delayed future)
-    assert_stream_pending(stream.reborrow());
+    assert_stream_pending!(stream);
     // Future is ready, yields the item
-    assert_stream_next(stream.reborrow(), 0);
+    assert_stream_next!(stream, 0);
 
     // Repeat
-    assert_stream_pending(stream.reborrow());
-    assert_stream_next(stream.reborrow(), 2);
+    assert_stream_pending!(stream);
+    assert_stream_next!(stream, 2);
 
-    assert_stream_pending(stream.reborrow());
-    assert_stream_next(stream.reborrow(), 4);
+    assert_stream_pending!(stream);
+    assert_stream_next!(stream, 4);
 
     // No more items
-    assert_stream_pending(stream.reborrow());
-    assert_stream_done(stream.reborrow());
+    assert_stream_pending!(stream);
+    assert_stream_done!(stream);
 }
diff --git a/rustc_deps/vendor/futures-sink-preview/.cargo-checksum.json b/rustc_deps/vendor/futures-sink-preview/.cargo-checksum.json
index 5beb998..cb2f714 100644
--- a/rustc_deps/vendor/futures-sink-preview/.cargo-checksum.json
+++ b/rustc_deps/vendor/futures-sink-preview/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"6bf01fb49226a4a2d2d30785bf8f8d6ddbbbfad030cc1f24461bba0bf1a0f652","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","src/channel_impls.rs":"0ea438302b2d87b0600d55b2d67022d7ab83ea86e466fcfbdb0c326d48b86edb","src/lib.rs":"ed7e3e4cff358215dad40fcf402080fcae7a7d3de950b4f501712dfd4609e8f0"},"package":"5188c94f2a7ab70f6b51fad1de15cf1375acd9cc7ee5c9f2207a3860ea39e41c"}
\ No newline at end of file
+{"files":{".cargo_vcs_info.json":"eeea7772ffd76a9ebae1b92127c7a37a74057c6cb7a05336c757239e5d5f74f5","Cargo.toml":"2e310f50970b011c986f2462720b347df182f61c1718fc0352e02e2ab5503725","LICENSE-APACHE":"275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","src/channel_impls.rs":"2385856e59fed1e922d2b862465d64398bd2b0e8397706c4fe30217602af646e","src/lib.rs":"94a249ef648319bc082737b94ac0bdd75c5f059485104224c55f7b066de9a1bd"},"package":"0478e09094535b45ffd4eb1272cd5975667277f1eed1acecb765642ee9010ffc"}
\ No newline at end of file
diff --git a/rustc_deps/vendor/futures-sink-preview/.cargo_vcs_info.json b/rustc_deps/vendor/futures-sink-preview/.cargo_vcs_info.json
new file mode 100644
index 0000000..14213da
--- /dev/null
+++ b/rustc_deps/vendor/futures-sink-preview/.cargo_vcs_info.json
@@ -0,0 +1,5 @@
+{
+  "git": {
+    "sha1": "2b2048910cf82cc468abd9d8e805224f7ab6da7a"
+  }
+}
diff --git a/rustc_deps/vendor/futures-sink-preview/Cargo.toml b/rustc_deps/vendor/futures-sink-preview/Cargo.toml
index b9b1230..0a42498 100644
--- a/rustc_deps/vendor/futures-sink-preview/Cargo.toml
+++ b/rustc_deps/vendor/futures-sink-preview/Cargo.toml
@@ -10,18 +10,16 @@
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
-cargo-features = ["edition"]
-
 [package]
+edition = "2018"
 name = "futures-sink-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 authors = ["Alex Crichton <alex@alexcrichton.com>"]
 description = "The asynchronous `Sink` trait for the futures-rs library.\n"
 homepage = "https://rust-lang-nursery.github.io/futures-rs"
-documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_sink"
+documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_sink"
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/rust-lang-nursery/futures-rs"
-edition = "2018"
 
 [lib]
 name = "futures_sink"
@@ -31,11 +29,11 @@
 default-features = false
 
 [dependencies.futures-channel-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.futures-core-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [features]
diff --git a/rustc_deps/vendor/futures-sink-preview/LICENSE-APACHE b/rustc_deps/vendor/futures-sink-preview/LICENSE-APACHE
index 16fe87b..9eb0b09 100644
--- a/rustc_deps/vendor/futures-sink-preview/LICENSE-APACHE
+++ b/rustc_deps/vendor/futures-sink-preview/LICENSE-APACHE
@@ -186,7 +186,8 @@
    same "printed page" as the copyright notice for easier
    identification within third-party archives.
 
-Copyright [yyyy] [name of copyright owner]
+Copyright (c) 2016 Alex Crichton
+Copyright (c) 2017 The Tokio Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/rustc_deps/vendor/futures-sink-preview/src/channel_impls.rs b/rustc_deps/vendor/futures-sink-preview/src/channel_impls.rs
index 59b34c5..d0138f3 100644
--- a/rustc_deps/vendor/futures-sink-preview/src/channel_impls.rs
+++ b/rustc_deps/vendor/futures-sink-preview/src/channel_impls.rs
@@ -1,7 +1,7 @@
 use crate::{Sink, Poll};
 use futures_core::task;
 use futures_channel::mpsc::{Sender, SendError, UnboundedSender};
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 impl<T> Sink for Sender<T> {
     type SinkItem = T;
diff --git a/rustc_deps/vendor/futures-sink-preview/src/lib.rs b/rustc_deps/vendor/futures-sink-preview/src/lib.rs
index ebe193c..6141d36 100644
--- a/rustc_deps/vendor/futures-sink-preview/src/lib.rs
+++ b/rustc_deps/vendor/futures-sink-preview/src/lib.rs
@@ -5,7 +5,7 @@
 
 #![no_std]
 #![warn(missing_docs, missing_debug_implementations)]
-#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_sink")]
+#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_sink")]
 
 #![feature(pin, arbitrary_self_types, futures_api)]
 
@@ -18,7 +18,7 @@
 
 use futures_core::task::{self, Poll};
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 
 /// A `Sink` is a value into which other values can be sent, asynchronously.
 ///
diff --git a/rustc_deps/vendor/futures-util-preview/.cargo-checksum.json b/rustc_deps/vendor/futures-util-preview/.cargo-checksum.json
index 8c9894b..1c7a678 100644
--- a/rustc_deps/vendor/futures-util-preview/.cargo-checksum.json
+++ b/rustc_deps/vendor/futures-util-preview/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"fff340a8a51cb34b406160cadcb8f94030bcf1b99203f38e9f070a7f2247295a","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","benches/futures_unordered.rs":"2ab34dd577f004adbbbac970ae6a2e2dc50057b751a14e9d47a21e267bb2bfd0","benches_disabled/bilock.rs":"a0c1728cbcb0da580482078c13d5499c45697873a8f956e3d5eca2a75bea218d","bilock.rs":"17d56a1e9bd8bc7437088ec6d2e3572604a1856253a30737f0c4f1a1ba2b338d","src/async_await/join.rs":"354e0374e21d3ad8c30a1163f3c1861c2c10d39752c3890190905d7e17032f1a","src/async_await/mod.rs":"cbe1625f1d1580b1212f344d56ad9fafb58c864afee423aec93de18aec9aba83","src/async_await/pending.rs":"7f74832599caba91032f42c11f408a8fe69ae74b3796f1571691499f6eddc180","src/async_await/poll.rs":"13be7386b5bdf271ed9f50c90fdcfbc788014d0fec3ebea88e63f1f7d87e887f","src/async_await/select.rs":"4b96ed1e9abf27c30f227e80785a79c111100382ef0d3dfabb6546d5fc72ae3d","src/async_await/spawn.rs":"05a75fabfb8762de888e60b89465edca1cc12e599ca264a906685f62f923b06f","src/compat/compat.rs":"4a82128b3f02756c0e48841e13ecb63de20cf322db2b3f887eb703691285151d","src/compat/compat01to03.rs":"2d5b2790394d1e31daf5157592728ed8c358247390c5faddd79d20b62910e84c","src/compat/compat03to01.rs":"7069a32276de968b816ba187fea17b282894c4e854763a024d86f8df5cf021f7","src/compat/executor.rs":"0dc991de7086b333cbb5b8f252280aa4d743616e8c8ff52b0139b5155e7db2f5","src/compat/future01ext.rs":"55717ef70c4bfb3a1b0475668f40b95ec56849ce453af9835d31d3ad6bb1101d","src/compat/mod.rs":"5df145d87a2c1ab1e256f99c7dd2f8bc788a3828624e8f78ccf0d7564226d34d","src/compat/stream01ext.rs":"3f158c63f7414e6cc913108948019bb2b73ac281b8fec6e492fad64c33848cd2","src/compat/tokio.rs":"f515cc05f26ec8a8053476c4c503a62a4af8c14e337e2a601bb384753442d7f9","src/future/abortable.rs":"5e476a4e5547b3940e15805b10f2a92078f084ba039e6732959bc40bd4445c89","src/future/catch_unwind.rs":"e805686bafb25d7fc11a596ee650fa291769190e280b01250a82bf239ac1e174","src/future/chain.rs":"6d1c15d3df08ab7b10f70e471e509b99e1ee424e6890d3b350af11e6ecb46826","src/future/disabled/join_all.rs":"2a2f13df20ef6fe771b4dad9553292be2542c9359728171f75bea800ea737903","src/future/disabled/select.rs":"7192b20e6baeb61e55815f58a1b3f0b81d8238361694105f9d1c9c7d32ee31ec","src/future/disabled/select_all.rs":"be23a3e4bd25fddb68544d82fbdb1807f5728642777a2bbfccc80f237d875de3","src/future/disabled/select_ok.rs":"9b81f1ea1e9664298638cf66a7e744b7dd7f38f5eb622f938f22624a43e11ab2","src/future/empty.rs":"0be261f1c9fbe00d5d514c715e1b8e7332b8c422abc5d7076140478f19b00c7b","src/future/flatten.rs":"6a5d7f2e595fa174f723ecde3687767ba41e7e11ea2a615b08a8dd9123c48c7e","src/future/flatten_stream.rs":"afa9f4c88954f54fc248d60efd5b3663640fdee50c735057acc3b55c8ff54ccd","src/future/fuse.rs":"56fe6b588b52247f2679b35f1e43b4cc2048c918d0e93b83093e0b5b51bd5817","src/future/inspect.rs":"5fc9ef9b46b3ebee716786c58b3773a8c7ddd4df582080c1753a6d31beba17d4","src/future/into_stream.rs":"6904259cebcb18a7695bbdbe93439557ffc5ee40e73585b50738d7ce2bd7d3b9","src/future/join.rs":"911731c7d82495509310a96e8b3b78223db1c15b8ce3507129294050b94d248a","src/future/lazy.rs":"9a9007295067035151f8be4ff3ef8a9ad21959b28e9d089d067cdb2df38543bb","src/future/map.rs":"3f346e2a440c4ba19c5f1820a78511c2bcd4522ac6ea0933e747f7a1bd5ff3d1","src/future/maybe_done.rs":"73ac3a6d1f028e70165fa94160c4b3869b25eb49be3a19e98922ddeb88061e88","src/future/mod.rs":"b83f3a1286453c3871154402b424e04b23b1197d131365c2b0e28e053d93a801","src/future/option.rs":"edfbed1c9d86fdf79125616a585cd28c1fee44c43e2ac0b74f8fab75b82a168e","src/future/poll_fn.rs":"3e6eb487362a3365fa0bca9f52ee09faf75d36e671c418c8ab5e898867872f22","src/future/ready.rs":"432289036e83d982ff429107872b0724e5f1e20cf8745f70c6cf1741e53fe5d1","src/future/shared.rs":"b28b38693488e152cea8dc3c09d9a1f5864c744b6fb5b1c489e9a9d5a0309bb8","src/future/then.rs":"ff4fe315a4fd856613095037a628aa2f23d4faa92aebd3080ab968d1ec7c8515","src/future/unit_error.rs":"20f7f7b21e8b0b54f00421f7b269d27d418f3e8496cfbdb080f32c84808e3a21","src/future/with_spawner.rs":"1aa18c64c8e301d21fb8507fce48075e088f36a7d51bd25c56ff0ae451e9c9ec","src/io/allow_std.rs":"9dc2a1115ae78365280f8d16ca83e267d57bb6723dd847e9007b9b4f3921d3cb","src/io/close.rs":"e3de1d6af3b223c4f23e1f28538d211f32aee32b83622a8abbe368ddc28fb3fd","src/io/copy_into.rs":"5285c77522e636039732d7a48fca1ee71ca8db0e4c2fd15f10691f9f409a5ba4","src/io/disabled/lines.rs":"863d2992575d95c4171abe167b2203d5cdab7b5e60924a9bce3969738c3ef5cf","src/io/disabled/read_until.rs":"b5771d78aaea0b6d7e5efa3c3cbbc745227ef008f7c9a3a8d6803ad3917c2934","src/io/flush.rs":"161cd2f8ef5bdc5ba1961ac19106f0a545263e5b55e30e11dfbc9dcbb5bcd85f","src/io/mod.rs":"aee3c460eb646c436c0eb8702e3630c8fbd514fc9bb49641b81616384c767cfc","src/io/read.rs":"28873220cbb12b3b45e9fa215ae386dc7b9c3a6deec73f1e6eaeef12aee0c9bd","src/io/read_exact.rs":"72b7d30464cae14f8ef52ae7972dfe1a2e5a4caa5736a9eebb3155aa56671a7b","src/io/read_to_end.rs":"e5627a03f57038f38b5d5fe1ff5849f68488cf84aeaabb77cc2a5a02e740c62e","src/io/split.rs":"f24bd14e6dca6aa76194a0c4ba744e0de72039e143ddfab7e415220bf2543099","src/io/window.rs":"e6fca0e2e8d99c76b4fe3ab9956997c6fd8167005d4dec01cae0c7879203e3c5","src/io/write_all.rs":"18222be128ad43c64ccf170d43facea4a5ad940b24c195b77e61653761608062","src/lib.rs":"d5cde9a5949b8890c687ac5d4b337610ea1f687eb84cca4ee8f08b61d6b38f27","src/lock.rs":"8bd2296318daa12a67377237089e2baa33e5354fe6744a6e12e3033664a16a59","src/macros/mod.rs":"8a71fe88cb0d13cac1cdc36083c2d7c2683699d5adaf62978f1dccf6ed7e7365","src/macros/poll.rs":"bce71e2fafd7453a551d66d48dfc7a1ab552adc68e85aaa00362aeffd4c89ac1","src/sink/buffer.rs":"939e9817d21d25b30f3c6099359b5abab22f5334d986a8ed1c17c13b90cbe4c6","src/sink/close.rs":"f5c09f9ffa93cdd737627f461b8344b8627bc9ef5c4b19f2647aff246f6e5b61","src/sink/drain.rs":"cf45b0eccd7f27dc49ba94e197514ac8b7e2a9f2ff0f5cc8a4f48727e2112a68","src/sink/err_into.rs":"44e34b2eb63b913888c8d34c2104adbe333e9f4a2f2e1b42254f1fcf679a84c0","src/sink/fanout.rs":"a9e16a821d9c3d1da93407cdd5356db212db202cc43f8aae3714dfa54ec32286","src/sink/flush.rs":"5fba553b72c8c9b1e6365e83dfe8a3c733057d7f7aeee2a76c40d5ad9614be31","src/sink/map_err.rs":"5a5de1df7682d6b7ddfde89e8de433871d9ff6a525deb8beb86f266ba96b9736","src/sink/mod.rs":"0d7e3ebe54fd8e5437b0543a9779ed5c4c8b544505f990c682d1c463cb2149a0","src/sink/send.rs":"560a9766f1027dd78a6c52310790b15c0ce1a84b7b3f67292bcc60caaa1d2a50","src/sink/send_all.rs":"bb5a4ac75cf8213312e8bcd01c1b48cc702b8ef253d6fa680980251c79e48f02","src/sink/wait.rs":"b2d016ad492a04d589c6766f7761b1c3e977cac17344feefe932cbd4d804ac53","src/sink/with.rs":"a32d406cd2e3adb987f68ebc6ee26077c4a1d113462dddfbeaae89cbefda2018","src/sink/with_flat_map.rs":"160800a87e664aed9272a5a2b77c1d32e448e3a747f795260f920aabfb0c6baf","src/stream/buffer_unordered.rs":"aba13061a85c027270be0e36b809869075cd6fffb80ccc58dffac3c48b0f8ccb","src/stream/buffered.rs":"620c4e4116fafac77713a0da671bddc8416e60a6c7d5ac6d4f145e7a782a0c16","src/stream/catch_unwind.rs":"d38c7380534d8a8a6b6603c4c5dfa75c8864ff42955eb29f6c7583c9c3576069","src/stream/chain.rs":"423d18962c736ff7451790b1945f9340616d67bb94797c75a8e49b78e46170f9","src/stream/chunks.rs":"e27df0e798a12e6b646dd3690777f0d5d8befc639897b2faede76ff89810c579","src/stream/collect.rs":"6b9edb286ca183608b25e679c2d848b2eff8a7f968e0918a7755a52b33415b01","src/stream/concat.rs":"5c0b32b4207263a791535797478bc03403eecb346b6985a5a8464c5237f0e8d3","src/stream/disabled/select_all.rs":"679bad489bc69f9b5a65ee7fa2f4020b9aa95ee89b183aa3de28e40ce747f61c","src/stream/empty.rs":"6af220c70d84906e6bcbe29d72c7f23e0f24ca0effaacb0b910b8875ac5fd5ad","src/stream/filter.rs":"1f50a0d8ea7416980c71333253e948bab07551d800ec74f597a7a6a75d6999e7","src/stream/filter_map.rs":"83c807d0eab7e412961f9ec1a3e47b0a9f37d9d9497f8084d0a6498e05536f07","src/stream/flatten.rs":"74975cc20804b8abc9f0f839961f0b2932a622604160ab127e32048278177c85","src/stream/fold.rs":"b433b930478ec2ceebb3a415724fda7453ab48be25a767d5b8718c805fdb01f3","src/stream/for_each.rs":"273619371cedd6e0be96a9d79c4c3014fec07d02c9aa7f649b1b10bfc2991780","src/stream/for_each_concurrent.rs":"edf7a8b3def07f00f66a6f23a37944f928f60d53163bae09cdd98e7ab3f6de92","src/stream/forward.rs":"84086532f00ac7b88e82cfc9eefc678993cf1d74d3d6d129ab811dab05816c3c","src/stream/fuse.rs":"9e786ceb1aa60b995f138d7aa186d54baf388a477850e2184bcd910fc9520e2c","src/stream/futures_ordered.rs":"1784f05d995ca4b7a3441ab3d7e98bf5c1a23000e19cc870aadf16f4c6ba5ec5","src/stream/futures_unordered/abort.rs":"bdfece9f91accafd5122be36d628c37c5b219ac0eecec181267840fbb1e95a45","src/stream/futures_unordered/iter.rs":"827b5dd94babac43600e8832f7a69679c518e4cdf5640098675348b2f186d173","src/stream/futures_unordered/mod.rs":"764c37a38987eb4813ca0a4f72b78baaa628eb936408a19e1d8b93d4a68c4149","src/stream/futures_unordered/ready_to_run_queue.rs":"81382095c3e08ee909e07893de37350bd35e353a034652569706b5e0b2d7c8cb","src/stream/futures_unordered/task.rs":"f78fe2a3c68670d319c5a20062ecfc64f07914fcae08edb4d061719555fa91a7","src/stream/inspect.rs":"e7026d4a4d39ea4b2789307daf22c43179dde81cd30c71638a0e491661fc0b27","src/stream/into_future.rs":"0196750ee5646284015ded133f793e5a705055f9725ab1253c1e4077022a0021","src/stream/iter.rs":"a46e5ef875f06dd2d616c454b1f5f4b3be216e4e42b9f42bf0f229aa6503a7c5","src/stream/map.rs":"461fe52ff28fe1e4b82382ef3987c0f82cb11d44253b2d16403019e585936bff","src/stream/mod.rs":"2804a39af5a9758f0cad665c49fd6fc284deae0614705ce9b6137a8074961e4e","src/stream/next.rs":"a04660a77e6fb5b4745d5850bbef4b16ace62ed1648d488e1527c1d215f22013","src/stream/once.rs":"768911fc1baa0929e311143dbb7153ccbb7edc2640d1abbff3e23c6ee9fcf575","src/stream/peek.rs":"2562617a9b0fab92d7a4964703ad6908f867e475affcabebdd1f04f79112b20f","src/stream/poll_fn.rs":"3db1cbeb1db9ef45c37bfe0185aa909b0df4422a679248f588da9634398fab10","src/stream/repeat.rs":"822752edcc3f9898e3ae0f413021043525549112ca0f67a30b4abbd9e4725298","src/stream/select.rs":"8ca2ffd73310199e4c54f89deaa34078af8befc33870b4018821f8fd3d3772f3","src/stream/skip.rs":"9d37ef11d09a19d7ec785f85f98b96437f2e01a49f547fbf071ce75570833893","src/stream/skip_while.rs":"14934401976f00db15eddb4be0e036f2c5a0d6bc5a77e0f6a49d977b7b3e5c4e","src/stream/split.rs":"9b9d8c6c0ee635bdd171d79bcfad980ed6457eb3fcd2920e155a4559cdee16c8","src/stream/take.rs":"1f2461e03f0cae85b181705386ba8dbfcc80f4fb16d720e5a741368b652cf5e9","src/stream/take_while.rs":"36886a386b1b9b2bdbdbbe3245ea6f68ba6fe83d8038373f2f607af5a3d5cda0","src/stream/then.rs":"89255c8c16a1e356a61b2e34f34a95fc9d135cd4b99f4334ee85be22cf596d29","src/stream/unfold.rs":"89715419a04597b936137d0f9508b25d4b95126b574ffe3e1655d9fe4645afec","src/stream/zip.rs":"2b927a3451f8f163a1ed2e18b4814f81a02f7364fc1d90fbd67136c43ec2d7c4","src/task/atomic_waker.rs":"5494ea022ca074d6676f3e4960bccbc5d8ea05eb1e0387b9464cf27b5d11d371","src/task/local_waker_ref.rs":"bc94638dd60deffc696290cb2e779a023a5efaed6830b30988604f16e2842bbf","src/task/mod.rs":"4551a1a858bc88fcfc9ecca66e34c34739b5cb27a3f0f223ee395dea2281bc89","src/task/spawn/mod.rs":"6e905f7da7a64c220668cc59ba49abb893a1b1aa0186168d2800a612efe74860","src/task/spawn/spawn_error.rs":"414b9d0281db705783850fcee2a9970bda8cad0a56bcb29853567ec76bbbdd5e","src/task/spawn/spawn_with_handle.rs":"0d0e1d1fc499a9d156f9e13c28599d37087633021864eac65a48ec3ec3df5de4","src/try_future/and_then.rs":"01efdb643bb139af7faba43099ee479bdc188b46606616dc07e2220e8ff6d298","src/try_future/err_into.rs":"699b7a43d77ca55d6aa3de7e5c66b91363c8c3964d294ccf936116c520db28cc","src/try_future/flatten_sink.rs":"878105b95d765f2cef55a1519445d4b1c999b7bcf1d5a8875d0bd70635107077","src/try_future/into_future.rs":"1f54ed9120ec1cc2f5718ffdebe4cf13a154d30403208bd9e4259b2c87a3138f","src/try_future/map_err.rs":"353e29bde66f448a77d2038167bc7c1ace16c1312f2bbd30249d715d212f05ab","src/try_future/map_ok.rs":"abca4f6c25ec48542e878b8b2292455b4aea34b2ab88808f928306cb03e7c179","src/try_future/mod.rs":"c39d9c2693cdeb7449097aed0a28e2b00ea121fbe5bc113d57d0bcbd1e510659","src/try_future/or_else.rs":"03a389c9503504dda272cdbae6a586d63879596cc786062b93da6dde91df2ad8","src/try_future/try_chain.rs":"830d7625c0df9247c98aea1918d7154b92b2ab1a852400b352c5d1ac492d856f","src/try_future/try_join.rs":"8ff172c4217912d30b289102bf05ac2d51378b37a5aa3846dd2af6dd624e8c49","src/try_future/unwrap_or_else.rs":"3a6e6177a47b6c97450b02d341475e5503e87d6e90f722e7882a6c4ad96cefa6","src/try_stream/err_into.rs":"498c6c5f93667c44b54f7a124e78980e08be34b7877a245c55691e0df7e8435d","src/try_stream/into_stream.rs":"eca213060a273e2bd912f3aa8ace07fbc326d5629c6ed0cc7965e60651fdbcfc","src/try_stream/map_err.rs":"260e071107db5c0398cf9075bf6d38d5a25142031bd5411534c485e79c9d0c91","src/try_stream/map_ok.rs":"4730c627056085db4a0f2e4d383856f2ecc07a586dadffea00d8264269ea73a9","src/try_stream/mod.rs":"cfd064cc9868b9ae8598ceef1c7c3f9f9901f813d529fa4cc9087abcd9cea2a0","src/try_stream/try_buffer_unordered.rs":"39c381e6886cbbbdc3ba3a23e5e3d17c3e9f0dbae323bf6f75a46e6b6c7f6e46","src/try_stream/try_collect.rs":"0e41308cf3da8c34dd1a634c7cc0eb76aaa98573533baf620cbeca09fd3bcac5","src/try_stream/try_filter_map.rs":"fb7efc5cb37559b659f12e6c4eb30f466eb43e11253165c2b71df0e5c9c7ce90","src/try_stream/try_fold.rs":"550db77bdec07302fc764114f45a9e26bbf443c63a6d53fdde8a4c4c29d4dec1","src/try_stream/try_for_each.rs":"d1dd1fc2abf6d9217c3723dccc1d1111827ef60e1c4bcfefab55c78b5bb584c5","src/try_stream/try_for_each_concurrent.rs":"8eaeacb8458d331979315dfc7c84927484b7ec4269dfacf3c2e1cf869ae619fe","src/try_stream/try_next.rs":"5dc7b49ca2096c7abd0c232564f1ecd691a5f486d4b210540fb200f1b3ac93dc","src/try_stream/try_skip_while.rs":"2df8b99540ccca1be91cbaefee90d6265061d84dc4d45cf815d3676aeb308bf2"},"package":"993195be08509499edcbf5be4bb94569f47fb9f4c336142dbf76362c2b4efd21"}
\ No newline at end of file
+{"files":{"Cargo.toml":"577ca5edc6e04e6fac6c6317961b18ba501a26c2808160e7c1f9eef646c456cb","LICENSE-APACHE":"275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427","LICENSE-MIT":"6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd","benches/futures_unordered.rs":"2ab34dd577f004adbbbac970ae6a2e2dc50057b751a14e9d47a21e267bb2bfd0","benches_disabled/bilock.rs":"a0c1728cbcb0da580482078c13d5499c45697873a8f956e3d5eca2a75bea218d","bilock.rs":"17d56a1e9bd8bc7437088ec6d2e3572604a1856253a30737f0c4f1a1ba2b338d","src/async_await/join.rs":"387a4d76f93ad58d9fbe83fa7ed7f12ef4335bd7da97ee2a9a54f1256c0468d1","src/async_await/mod.rs":"cbe1625f1d1580b1212f344d56ad9fafb58c864afee423aec93de18aec9aba83","src/async_await/pending.rs":"cf1da3b2be623f6ea07b9a7d377bd178f647f5e6c9baab18d29c37065d568d9e","src/async_await/poll.rs":"561b38e0e92258ff4187a9c843a79c0eab4f9271dbddd672e19032b4f3d6f4ae","src/async_await/select.rs":"1b3e400548ab5248ccf3bec7e84a11fb839d8cdd4dfafe91974b7855b175d410","src/async_await/spawn.rs":"05a75fabfb8762de888e60b89465edca1cc12e599ca264a906685f62f923b06f","src/compat/compat.rs":"2aba6ad31e00b5b6b3b5b8759fac4ea47931c3da001b5c6859fa5b62667140a4","src/compat/compat01to03.rs":"daba6071eba1d3c93bd8a189442cf65b25fad83d716a1fd5007526f3a43d6619","src/compat/compat03to01.rs":"580832fa800a1550b1d5d0d168b41c1eaead8ee00731eeaacd09d4994f3ec002","src/compat/executor.rs":"4f5f8b06ceb3b69851a55963e0c607d22f32c7d6c00ed948cc2b6485b96a8a9b","src/compat/future01ext.rs":"c49a34cdff3183a499dcbc531791a65eab195170d8589fd765654bd0dfff9310","src/compat/mod.rs":"07ce901842717846553dafa2b0cbc49a2b54f6e591c1598e740c2a8ac42f64b3","src/compat/stream01ext.rs":"96439fb74aedc01664461e1d8773bdbfa435cd0d0c7cd7a6f4ac6c3697048219","src/compat/tokio.rs":"e2f57a53002b39b7e47e179927e6b0f0c84a4e313b67a5a32f1b91aa8f6b39c6","src/future/abortable.rs":"a10f3d78d149e51ae1a1f75b7072bb2c5b61dd207cb3ded263efed94ac0353f1","src/future/catch_unwind.rs":"4c40e34a3e7a3de258a81194e7829e50336fa12955c631eaf043af6843a0026d","src/future/chain.rs":"b187e812af727904e61628f358277295b0f01753df6977c6437c01331ac173d9","src/future/disabled/join_all.rs":"2a2f13df20ef6fe771b4dad9553292be2542c9359728171f75bea800ea737903","src/future/disabled/select.rs":"7192b20e6baeb61e55815f58a1b3f0b81d8238361694105f9d1c9c7d32ee31ec","src/future/disabled/select_all.rs":"be23a3e4bd25fddb68544d82fbdb1807f5728642777a2bbfccc80f237d875de3","src/future/disabled/select_ok.rs":"9b81f1ea1e9664298638cf66a7e744b7dd7f38f5eb622f938f22624a43e11ab2","src/future/empty.rs":"53a7894b3ab81d6eb20df8881c378597f275e6ac22e47e2fe47cf201f14a89d8","src/future/flatten.rs":"7ee42b74fb9c5a3bd408f452f8433317fda3b41e37d89d3c80f56913dcfc6a4b","src/future/flatten_stream.rs":"2d879057b4e13727d2ad186361c821b939e2a1ac2570e780c2a41dcd49ad2acd","src/future/fuse.rs":"8eaba75c9afb813c8c9ce3a220b4dbcd70e20f33d41331f52ca37f10386f654b","src/future/inspect.rs":"756cf8c646332adb50cbb6aed52db3397fc5e8e3b5579c12bca766eab05405f4","src/future/into_stream.rs":"b9aedf349e2aa392fe27c39d2e06fdbd40d5ee9592eb9620dde2891513bf2995","src/future/join.rs":"4298d76fc1b0ce77fba4b84fed51a493b1e47c362b9ac28c8d0f02c9972974dc","src/future/lazy.rs":"5b755fb6888861e035ab437942d96aab489a503304a81f26e1ce6b2b15a9d5d4","src/future/map.rs":"a1ac8f3edc21a7ee19873915f6633149f1889c1d559e42591570efa0c6d753f4","src/future/maybe_done.rs":"7ea081fa029e605c327032bced28ee4c8fc9fa9b5acb94a400ab8e8263f64f46","src/future/mod.rs":"7ba08483c749318458a93febe258178da0a09b2493fc933ba563dd0718a1a27d","src/future/option.rs":"45ba12fc7248ff07cd4148b3705d12b0da005e70eb8bcd9aa69a6ab6ba741327","src/future/poll_fn.rs":"fb910de84d327c7ef2e6bb58d885b72bff4007351be0be6be4a05963da9338c6","src/future/ready.rs":"2ffe476cde8c1a34ef79d9312b6b0216de91f016ff92586f2d25956c92b988bc","src/future/shared.rs":"5b6c058158fc575925b7d9cc7497a9a3a24fde87e927c64ebff7874ab8bfecfc","src/future/then.rs":"3aa68c2f37ec414dc8b20f0473a09a2912ec394ccfbed173b2e634933faef461","src/future/unit_error.rs":"c572a1df816e337d67d242f89574cccb6a0487c446cda366f1e0690eb07336bf","src/future/with_spawner.rs":"088c6500048bac35e0b51b56ae281cd0277fe130a9cee0f74cbc936a7df8d783","src/io/allow_std.rs":"9dc2a1115ae78365280f8d16ca83e267d57bb6723dd847e9007b9b4f3921d3cb","src/io/close.rs":"c93080cf4b9ad3261f9d5cf6088fbb3dddc720e150bc2d49e04beb19a3506f7c","src/io/copy_into.rs":"e2ace6c9c89a00da3d8177fb80cddcfb56cb739ccfab5d11029be12f7d9eff62","src/io/disabled/lines.rs":"863d2992575d95c4171abe167b2203d5cdab7b5e60924a9bce3969738c3ef5cf","src/io/disabled/read_until.rs":"b5771d78aaea0b6d7e5efa3c3cbbc745227ef008f7c9a3a8d6803ad3917c2934","src/io/flush.rs":"4662848a66e0009e4726bac88f105e78bbf310e936253c73be88b9cd7594aabf","src/io/mod.rs":"aee3c460eb646c436c0eb8702e3630c8fbd514fc9bb49641b81616384c767cfc","src/io/read.rs":"6983915b40b466c0de574c700d41de3cd372afa56afc6b2fc6e1f4ca91e6572d","src/io/read_exact.rs":"3cf4102e743cf8ae1e3fe03b72e01e584be4e2301e1d3d86d84cda9119a49b3b","src/io/read_to_end.rs":"79171f5e62a4b539c29251ee32073e95958d2b18883d862231d90cc18f6f3626","src/io/split.rs":"c0c4e1e8b4a0ac0528a326ce4b82c4e53e8129091382a81345050a36d252223d","src/io/window.rs":"e6fca0e2e8d99c76b4fe3ab9956997c6fd8167005d4dec01cae0c7879203e3c5","src/io/write_all.rs":"be82dc17643451e7f665eb08bb590740095b0e85e1bc1d8855fa58ec6a6b3904","src/lib.rs":"ab0fb99a22a3a9da405ea1b57f961a91954e36b23183bdef5f4d8b9c73f390b7","src/lock.rs":"86f0f5521531e74ee2cd17ce2d5d5e477f2315c1af596ed24e6453d693ce182a","src/macros/mod.rs":"8a71fe88cb0d13cac1cdc36083c2d7c2683699d5adaf62978f1dccf6ed7e7365","src/macros/poll.rs":"bce71e2fafd7453a551d66d48dfc7a1ab552adc68e85aaa00362aeffd4c89ac1","src/sink/buffer.rs":"188282638ff140512ea89521a7561267b971ce72cf82ce4c1c22f4d6c6a568a9","src/sink/close.rs":"806788587cd2ba3207b656864e04a1e73e5be083ec3e70bf9e5939c900d62dfb","src/sink/drain.rs":"d4a0bd2fa1eab8be37348faa4c16d484502ea821289db9f19fcb4f0e57566917","src/sink/err_into.rs":"e9adac4b5e37c898c2dbabe487461a3a16ebeba3cf9b180e3b5f429fe5446fa0","src/sink/fanout.rs":"97ee84c633d34086999678429c3b339f9bc1141cf1a4b9dcac5430c97481e076","src/sink/flush.rs":"d33758358a6c8c505ba8bb2d5e1172f7be81e4913389218006cfa7f83668c804","src/sink/map_err.rs":"ed63a101c8f20ca059077500ba8b7677e79d50a6e80b751953e9c1f0bd548560","src/sink/mod.rs":"0d7e3ebe54fd8e5437b0543a9779ed5c4c8b544505f990c682d1c463cb2149a0","src/sink/send.rs":"5d7a14bcbaa0086752c7cb8570b1f6e7584a9e554f3256ac655bc5e8514fced7","src/sink/send_all.rs":"02348ef3f113177441fa06894ea5804e067074073a7212768a925c1f2175f730","src/sink/wait.rs":"b2d016ad492a04d589c6766f7761b1c3e977cac17344feefe932cbd4d804ac53","src/sink/with.rs":"5e76f186bb8602d65c0795bef932bbce69edba9dd0e7cd92325cf0d533d4e827","src/sink/with_flat_map.rs":"2bf370bda8f190efc3c35baf9b66543dd698d8032cbe57fc464be38f381bb38e","src/stream/buffer_unordered.rs":"46632874faade63e9aed5c11516ab9ac2669b56ab38b57bec2db268b9557d850","src/stream/buffered.rs":"44b903fe2533ae8c92fbdda2c1caaaf0a353bd280b3280b58424d56d15b8c49a","src/stream/catch_unwind.rs":"de14c2bf7cf474068237e92dc9db6f953b099e81fe78313779175e6faaba9810","src/stream/chain.rs":"5a18932589417c231dca1d2bc29701d9a448915b7f2e884c6dbd2d90c48b33cb","src/stream/chunks.rs":"0e12bdb2472ab978f30363ea1ae3f715fbf721959a849f4b54728f0a2cebec83","src/stream/collect.rs":"b679e32dcb4e260eeefc0c3d0f8b2e3cff050020c8e6d206bbb1e1081d7445bb","src/stream/concat.rs":"4f8bfe5c99ddbc8865c31d2241d54ffa07b0289268e6182dd2034bcc4cf489d7","src/stream/disabled/select_all.rs":"137e9dce1615ae2878c45e14ef129753ad16ea8999d954fec7234467fc941c54","src/stream/empty.rs":"79031cc0f375c0c4fbc262c119569d6330a124defe274d93952089773bd38400","src/stream/filter.rs":"bf2a45fb1cd6ba19923001e781f0734fa53f4d74b7429a9a68ebbf25d22fb7bb","src/stream/filter_map.rs":"f72265af4bc35363f6b248aafe46da1215e96fff10466c857cf4edf315f7bef8","src/stream/flatten.rs":"c6ff744c975d2bc6100ca789cb470350cb4b457110f987f158d27312036d9a4f","src/stream/fold.rs":"f626df2c55e4220784022b3efc48e345b1dbb69ef5104360f10db044b0ef22f5","src/stream/for_each.rs":"203dd0cf46622949fd8c5f82bd45eea685ca14581e0e22b0d76ed86cad808688","src/stream/for_each_concurrent.rs":"f80727825456cf22820baaf758082794d104fc71507ba498f101efd72d89f50f","src/stream/forward.rs":"1c73a9fca1a951dfcb224597acfbc29450fde6c26fe9a5c5269cbb66c88457d6","src/stream/fuse.rs":"b5772dea4b0cc9c7a99db1dc85e4e2dfef905c14685b0210487c8ce96cec3925","src/stream/futures_ordered.rs":"55601a10b332ecc2eb8b7aef59b40cb5dc29cc13e5b577a8f518a9299f9ce947","src/stream/futures_unordered/abort.rs":"bdfece9f91accafd5122be36d628c37c5b219ac0eecec181267840fbb1e95a45","src/stream/futures_unordered/iter.rs":"58ebad9fe69c63fbdf74a06b95f11e7918259a8a616e81e924f5a5c96d06ff65","src/stream/futures_unordered/mod.rs":"4cd659c64c10be3c3a8f9e8fa13480d29f1a50bf6f6c7da28abd25b8bce57065","src/stream/futures_unordered/ready_to_run_queue.rs":"81382095c3e08ee909e07893de37350bd35e353a034652569706b5e0b2d7c8cb","src/stream/futures_unordered/task.rs":"f78fe2a3c68670d319c5a20062ecfc64f07914fcae08edb4d061719555fa91a7","src/stream/inspect.rs":"a39c4243b67e003a812559b8ee061439f9f2ac82188f0b57bbac2c8ed1ef49f5","src/stream/into_future.rs":"600b87d5fc4ea406b4f3a17dc5a52fd6bb06d5f65dde285bafd1acc62f77f743","src/stream/iter.rs":"952e6e2b0467763824dbbf3ccb11d170755fff5f05b516fe0897dca980170eb0","src/stream/map.rs":"7b0eefc44d7b7a4089c94400eef194d54970fa58b26ceec591e4a0549fc90ada","src/stream/mod.rs":"e6e4c48272c29e7736c4e967ecc2da4e058675e1617df0beb442decc2b052ef1","src/stream/next.rs":"4ddefa25d0352ad38c575d1e3725b7b7fb038d03945a0ad8b67f832fa44c6635","src/stream/once.rs":"c01bd019c53c6ff9327435fe904e3ee7dfde4c408704315828281142fd4b6f42","src/stream/peek.rs":"57c484124b66ad6abc13235497f9b09e893d00b801007592ef7defb69c16cd76","src/stream/poll_fn.rs":"6b40d5c281033b25908ab7888a0ecf6e8e3293c5776f384356138ca49ea4bcf7","src/stream/repeat.rs":"148a98f0722ee5e1f6e189ed8ce306c6108045d62d446a19c51806e844c9e2be","src/stream/select.rs":"cbc8a7d63f926f25bee8f434c6c8ce4cc685809ac722d859780810435411063b","src/stream/skip.rs":"19fe3422e021ecc708ad26fe2b373da2b28a65c202cfbb9fda17a24cc4516111","src/stream/skip_while.rs":"22ffa1af32da9a1babec25392eec21ae49edbfd7a844440f2143e94733a0af58","src/stream/split.rs":"35c72443c182eab3996eb8bd2069f70b2d8905d5040eab290f67aaa1df2f864f","src/stream/take.rs":"1f3f6bccd4094cb8c18a884be14923aa3891fc8851b5b886a3a01ee38fdca3d6","src/stream/take_while.rs":"9d2761ed0208c09a8c41b5856679a099c852a8bcb79504f6b946504d88e4c64a","src/stream/then.rs":"6fddb81b5ab475cc89a885d613a7561b2a37ba6670ac71d5c531a1a38be26524","src/stream/unfold.rs":"60186b0f3933b33325bad26236168621af78fd6aadd6f3021f28ebe9450b3332","src/stream/zip.rs":"263b59becc900bed9025b4dcfc3559891ea11d9e95964ee43ba5ece1238e1c64","src/task/atomic_waker.rs":"edeb1b581df0372fd912122e17ba52244de50c30b9cf8a94b077e753640d75ee","src/task/local_waker_ref.rs":"80ec2c71794198da44067563f26e499056d5ad7c96c1f0c3a9735ac627dfea1f","src/task/mod.rs":"4551a1a858bc88fcfc9ecca66e34c34739b5cb27a3f0f223ee395dea2281bc89","src/task/spawn/mod.rs":"6e905f7da7a64c220668cc59ba49abb893a1b1aa0186168d2800a612efe74860","src/task/spawn/spawn_error.rs":"414b9d0281db705783850fcee2a9970bda8cad0a56bcb29853567ec76bbbdd5e","src/task/spawn/spawn_with_handle.rs":"48d9c128b314c3bd33655fc9db6be2b1497adfdec69cfed0af749b6204776382","src/try_future/and_then.rs":"5039df48720a208fd689028c38760b8581cb379f55446c0424a03171f48373c3","src/try_future/err_into.rs":"b16df248bd2d182d5fed5a290b98343202a773d5aec5e53d3972e4e788bbf353","src/try_future/flatten_sink.rs":"6208880e0dc886691e9548bd5493162725702f144d59e6d6777ace062464b81c","src/try_future/into_future.rs":"2b55d6304fc18cd5094b6e4bb00bda93418f74282c2edeca098f71eefa28df50","src/try_future/map_err.rs":"4e1a380c5565ec60c5395b5fca3017fffae568f21986c48c56a7493ca91855fd","src/try_future/map_ok.rs":"c812feb203e89265c025d76289710b947ce574c7b82a4cb8851fc855aa2ed22e","src/try_future/mod.rs":"0e8bf7e41727303d4a19c35e946a1f3e57fcf168061e73916fcd4cb8d4e0b748","src/try_future/or_else.rs":"d4374b27c8a2c297c3657d5ed12465801d10786378aa9eff6e1f1a751cf9170d","src/try_future/try_chain.rs":"e1ab316ffc93cf08f92311fb0a91d4845ac274fb6f2202e71174b3207a7b5e60","src/try_future/try_join.rs":"00ae78dca81ed6c8c5db55acac5ab15c82df5889467c5a752507982ad70a1b08","src/try_future/unwrap_or_else.rs":"4776a4c8fe614cf08a8e762d3f5dcc73f3dac9865118b1216c75537aa257bf66","src/try_stream/err_into.rs":"cfad507cc206ab1b6c009d17dfa58105f7e32d13aa2c40e584148f5d7222900d","src/try_stream/into_stream.rs":"1f7dc2826107a84e361dceb3dbc6d32acec88ed973663fd7abd8f88ccc9103fd","src/try_stream/map_err.rs":"1b651b5a98cc5a1641fb963900fe1ba183b6d69346c990facdd9d6d055668bf3","src/try_stream/map_ok.rs":"cb3b0c95df2dd7f5015c5cf24b9c5b22be09ee6b5c500a872bf023f2eb471abc","src/try_stream/mod.rs":"6427a662b4cd8f39e71108108a9c55e48ceec34ee4ee354662317e9f91fbb4e0","src/try_stream/try_buffer_unordered.rs":"25c67857c9f8f37c94f9d7361451ba08a9096ac2ee92e9eec1838c2feb1cc886","src/try_stream/try_collect.rs":"24976ee00f85f49ef39cfd7d5e24cf762c73d6ac2903dcb8a03bfb68b8498ed9","src/try_stream/try_filter_map.rs":"d6b3297b80467fb289c62766cc6ebd2d71f5a38aacdec6e292992240bc732cb5","src/try_stream/try_fold.rs":"762cd09f3448614cdb2fef501adcd2f362c536b90b87131a1ec882e48324bef1","src/try_stream/try_for_each.rs":"93581ba56e15624872bcfb08488afd62a0838625528f415ea856f33b17abd178","src/try_stream/try_for_each_concurrent.rs":"6cea0513fbe24c0b65ffe67fe4386bab9bbb701bcc1cfd0c9a950d8817447325","src/try_stream/try_next.rs":"ad3e0fb07476f759c9ad3077a2caa48e2e2ccdaf55f700af2ca60549125f4663","src/try_stream/try_skip_while.rs":"fbdc801393734d14dcb12435fb4f4b3ef7ce1b6d37aebb81627ae6534fc9bade"},"package":"ec23cc47a588bf2757a85f42b88f9171b5c348da2897c8085ed27a06cbd5ba9e"}
\ No newline at end of file
diff --git a/rustc_deps/vendor/futures-util-preview/Cargo.toml b/rustc_deps/vendor/futures-util-preview/Cargo.toml
index 8aed60a..4e1637b 100644
--- a/rustc_deps/vendor/futures-util-preview/Cargo.toml
+++ b/rustc_deps/vendor/futures-util-preview/Cargo.toml
@@ -10,18 +10,16 @@
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
-cargo-features = ["edition"]
-
 [package]
+edition = "2018"
 name = "futures-util-preview"
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 authors = ["Alex Crichton <alex@alexcrichton.com>"]
 description = "Common utilities and extension traits for the futures-rs library.\n"
 homepage = "https://rust-lang-nursery.github.io/futures-rs"
-documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_util"
+documentation = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_util"
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/rust-lang-nursery/futures-rs"
-edition = "2018"
 
 [lib]
 name = "futures_util"
@@ -34,23 +32,23 @@
 optional = true
 
 [dependencies.futures-channel-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.futures-core-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.futures-io-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.futures-sink-preview]
-version = "0.3.0-alpha.3"
+version = "0.3.0-alpha.6"
 default-features = false
 
 [dependencies.pin-utils]
-version = "0.1.0-alpha.1"
+version = "0.1.0-alpha.2"
 
 [dependencies.slab]
 version = "0.4"
@@ -59,11 +57,6 @@
 [dependencies.tokio-executor]
 version = "0.1.2"
 optional = true
-[dev-dependencies.futures-executor-preview]
-version = "0.3.0-alpha.3"
-
-[dev-dependencies.futures-preview]
-version = "0.3.0-alpha.3"
 
 [features]
 bench = []
diff --git a/rustc_deps/vendor/futures-util-preview/LICENSE-APACHE b/rustc_deps/vendor/futures-util-preview/LICENSE-APACHE
index 16fe87b..9eb0b09 100644
--- a/rustc_deps/vendor/futures-util-preview/LICENSE-APACHE
+++ b/rustc_deps/vendor/futures-util-preview/LICENSE-APACHE
@@ -186,7 +186,8 @@
    same "printed page" as the copyright notice for easier
    identification within third-party archives.
 
-Copyright [yyyy] [name of copyright owner]
+Copyright (c) 2016 Alex Crichton
+Copyright (c) 2017 The Tokio Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/rustc_deps/vendor/futures-util-preview/benches/futures_unordered.rs b/rustc_deps/vendor/futures-util-preview/benches/futures_unordered.rs
old mode 100755
new mode 100644
diff --git a/rustc_deps/vendor/futures-util-preview/benches_disabled/bilock.rs b/rustc_deps/vendor/futures-util-preview/benches_disabled/bilock.rs
old mode 100755
new mode 100644
diff --git a/rustc_deps/vendor/futures-util-preview/src/async_await/join.rs b/rustc_deps/vendor/futures-util-preview/src/async_await/join.rs
index 5a599ba..c3619c8 100644
--- a/rustc_deps/vendor/futures-util-preview/src/async_await/join.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/async_await/join.rs
@@ -33,14 +33,14 @@
             let mut all_done = true;
             $(
                 if $crate::core_reexport::future::Future::poll(
-                    unsafe { $crate::core_reexport::mem::PinMut::new_unchecked(&mut $fut) }, cx).is_pending()
+                    unsafe { $crate::core_reexport::pin::PinMut::new_unchecked(&mut $fut) }, cx).is_pending()
                 {
                     all_done = false;
                 }
             )*
             if all_done {
                 $crate::core_reexport::task::Poll::Ready(($(
-                    unsafe { $crate::core_reexport::mem::PinMut::new_unchecked(&mut $fut) }.take_output().unwrap(),
+                    unsafe { $crate::core_reexport::pin::PinMut::new_unchecked(&mut $fut) }.take_output().unwrap(),
                 )*))
             } else {
                 $crate::core_reexport::task::Poll::Pending
@@ -101,15 +101,15 @@
             let mut all_done = true;
             $(
                 if $crate::core_reexport::future::Future::poll(
-                    unsafe { $crate::core_reexport::mem::PinMut::new_unchecked(&mut $fut) }, cx).is_pending()
+                    unsafe { $crate::core_reexport::pin::PinMut::new_unchecked(&mut $fut) }, cx).is_pending()
                 {
                     all_done = false;
-                } else if unsafe { $crate::core_reexport::mem::PinMut::new_unchecked(&mut $fut) }.output_mut().unwrap().is_err() {
+                } else if unsafe { $crate::core_reexport::pin::PinMut::new_unchecked(&mut $fut) }.output_mut().unwrap().is_err() {
                     // `.err().unwrap()` rather than `.unwrap_err()` so that we don't introduce
                     // a `T: Debug` bound.
                     return $crate::core_reexport::task::Poll::Ready(
                         $crate::core_reexport::result::Result::Err(
-                            unsafe { $crate::core_reexport::mem::PinMut::new_unchecked(&mut $fut) }.take_output().unwrap().err().unwrap()
+                            unsafe { $crate::core_reexport::pin::PinMut::new_unchecked(&mut $fut) }.take_output().unwrap().err().unwrap()
                         )
                     );
                 }
@@ -119,7 +119,7 @@
                     $crate::core_reexport::result::Result::Ok(($(
                         // `.ok().unwrap()` rather than `.unwrap()` so that we don't introduce
                         // an `E: Debug` bound.
-                        unsafe { $crate::core_reexport::mem::PinMut::new_unchecked(&mut $fut) }.take_output().unwrap().ok().unwrap(),
+                        unsafe { $crate::core_reexport::pin::PinMut::new_unchecked(&mut $fut) }.take_output().unwrap().ok().unwrap(),
                     )*))
                 )
             } else {
diff --git a/rustc_deps/vendor/futures-util-preview/src/async_await/pending.rs b/rustc_deps/vendor/futures-util-preview/src/async_await/pending.rs
index bce9a83..75bec84 100644
--- a/rustc_deps/vendor/futures-util-preview/src/async_await/pending.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/async_await/pending.rs
@@ -1,4 +1,4 @@
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/async_await/poll.rs b/rustc_deps/vendor/futures-util-preview/src/async_await/poll.rs
index d412964..3c12ca0 100644
--- a/rustc_deps/vendor/futures-util-preview/src/async_await/poll.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/async_await/poll.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/async_await/select.rs b/rustc_deps/vendor/futures-util-preview/src/async_await/select.rs
index 8b84d2f..40887da 100644
--- a/rustc_deps/vendor/futures-util-preview/src/async_await/select.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/async_await/select.rs
@@ -50,7 +50,7 @@
         let __priv_res = await!($crate::future::poll_fn(|cx| {
             $(
                 match $crate::core_reexport::future::Future::poll(
-                    $crate::core_reexport::mem::PinMut::new(&mut $name), cx)
+                    $crate::core_reexport::pin::PinMut::new(&mut $name), cx)
                 {
                     $crate::core_reexport::task::Poll::Ready(x) =>
                         return $crate::core_reexport::task::Poll::Ready(__PrivResult::$name(x)),
diff --git a/rustc_deps/vendor/futures-util-preview/src/compat/compat.rs b/rustc_deps/vendor/futures-util-preview/src/compat/compat.rs
index 78f44ab..3bfc759 100644
--- a/rustc_deps/vendor/futures-util-preview/src/compat/compat.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/compat/compat.rs
@@ -1,12 +1,14 @@
-/// Converts a futures 0.3 [`TryFuture`][futures_core::future::TryFuture],
-/// [`TryStream`][futures_core::stream::TryStream] or
-/// [`Sink`][futures_sink::Sink] into a futures 0.1 [`Future`][futures::Future],
-/// [`Stream`][futures::Stream] or [`Sink`][futures::Sink] and vice versa.
+/// Converts a futures 0.3 [`TryFuture`](futures_core::future::TryFuture),
+/// [`TryStream`](futures_core::stream::TryStream) or
+/// [`Sink`](futures_sink::Sink) into a futures 0.1
+/// [`Future`](futures::future::Future),
+/// [`Stream`](futures::stream::Stream) or
+/// [`Sink`](futures::sink::Sink) and vice versa.
 #[derive(Debug)]
 #[must_use = "futures do nothing unless polled"]
 pub struct Compat<T, Sp> {
-    crate inner: T,
-    crate spawn: Option<Sp>,
+    pub(crate) inner: T,
+    pub(crate) spawn: Option<Sp>,
 }
 
 impl<T, Sp> Compat<T, Sp> {
@@ -16,7 +18,7 @@
     }
 
     /// Creates a new [`Compat`].
-    crate fn new(inner: T, spawn: Option<Sp>) -> Compat<T, Sp> {
+    pub(crate) fn new(inner: T, spawn: Option<Sp>) -> Compat<T, Sp> {
         Compat { inner, spawn }
     }
 }
diff --git a/rustc_deps/vendor/futures-util-preview/src/compat/compat01to03.rs b/rustc_deps/vendor/futures-util-preview/src/compat/compat01to03.rs
index 36cdbd7..7cf34e1 100644
--- a/rustc_deps/vendor/futures-util-preview/src/compat/compat01to03.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/compat/compat01to03.rs
@@ -1,13 +1,11 @@
 use super::Compat;
-use futures::{
-    executor::{
-        self as executor01, Notify as Notify01, NotifyHandle as NotifyHandle01,
-        UnsafeNotify as UnsafeNotify01,
-    },
-    Async as Async01, Future as Future01, Stream as Stream01,
+use futures::executor::{
+    self as executor01, UnsafeNotify as UnsafeNotify01,
+    Notify as Notify01, NotifyHandle as NotifyHandle01,
 };
+use futures::{Async as Async01, Future as Future01, Stream as Stream01};
 use futures_core::{task as task03, Future as Future03, Stream as Stream03};
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 impl<Fut: Future01> Future03 for Compat<Fut, ()> {
     type Output = Result<Fut::Item, Fut::Error>;
diff --git a/rustc_deps/vendor/futures-util-preview/src/compat/compat03to01.rs b/rustc_deps/vendor/futures-util-preview/src/compat/compat03to01.rs
index 38d4918..951da79 100644
--- a/rustc_deps/vendor/futures-util-preview/src/compat/compat03to01.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/compat/compat03to01.rs
@@ -8,7 +8,7 @@
     task as task03, TryFuture as TryFuture03, TryStream as TryStream03,
 };
 use futures_sink::Sink as Sink03;
-use std::{marker::Unpin, mem::PinMut, sync::Arc};
+use std::{marker::Unpin, pin::PinMut, sync::Arc};
 
 impl<Fut, Sp> Future01 for Compat<Fut, Sp>
 where
diff --git a/rustc_deps/vendor/futures-util-preview/src/compat/executor.rs b/rustc_deps/vendor/futures-util-preview/src/compat/executor.rs
index 681e909..95cfc91 100644
--- a/rustc_deps/vendor/futures-util-preview/src/compat/executor.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/compat/executor.rs
@@ -7,15 +7,42 @@
 use futures_core::future::FutureObj;
 
 /// A future that can run on a futures 0.1
-/// [`Executor`][futures::future::Executor].
+/// [`Executor`](futures::future::Executor).
 pub type Executor01Future = Compat<UnitError<FutureObj<'static, ()>>, Box<dyn Spawn03 + Send>>;
 
-/// Extension trait for futures 0.1 [`Executor`][futures::future::Executor].
+/// Extension trait for futures 0.1 [`Executor`](futures::future::Executor).
 pub trait Executor01CompatExt: Executor01<Executor01Future> +
                                Clone + Send + 'static
 {
-    /// Converts a futures 0.1 [`Executor`][futures::future::Executor] into a
-    /// futures 0.3 [`Executor`][futures_core::task::Executor].
+    /// Converts a futures 0.1 [`Executor`](futures::future::Executor) into a
+    /// futures 0.3 [`Spawn`](futures_core::task::Spawn).
+    ///
+    /// ```ignore
+    /// #![feature(async_await, await_macro, futures_api)]
+    /// use futures::Future;
+    /// use futures::future::{FutureExt, TryFutureExt};
+    /// use futures::compat::Executor01CompatExt;
+    /// use futures::spawn;
+    /// use tokio_threadpool::ThreadPool;
+    ///
+    /// let pool01 = ThreadPool::new();
+    /// let spawner03 = pool01.sender().clone().compat();
+    /// # let (tx, rx) = futures::channel::oneshot::channel();
+    ///
+    /// let future03 = async {
+    ///     println!("Running on the pool");
+    ///     spawn!(async {
+    ///         println!("Spawned!");
+    ///         # tx.send(42).unwrap();
+    ///     }).unwrap();
+    /// };
+    ///
+    /// let future01 = future03.unit_error().boxed().compat(spawner03);
+    ///
+    /// pool01.spawn(future01);
+    /// pool01.shutdown_on_idle().wait().unwrap();
+    /// # futures::executor::block_on(rx).unwrap();
+    /// ```
     fn compat(self) -> Executor01As03<Self>
         where Self: Sized;
 }
@@ -30,8 +57,8 @@
     }
 }
 
-/// Converts a futures 0.1 [`Executor`][futures::future::Executor] into a
-/// futures 0.3 [`Executor`][futures_core::task::Executor].
+/// Converts a futures 0.1 [`Executor`](futures::future::Executor) into a
+/// futures 0.3 [`Spawn`](futures_core::task::Spawn).
 #[derive(Clone)]
 pub struct Executor01As03<Ex> {
     executor01: Ex
diff --git a/rustc_deps/vendor/futures-util-preview/src/compat/future01ext.rs b/rustc_deps/vendor/futures-util-preview/src/compat/future01ext.rs
index 170bc59..605f6a5 100644
--- a/rustc_deps/vendor/futures-util-preview/src/compat/future01ext.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/compat/future01ext.rs
@@ -3,11 +3,12 @@
 
 impl<Fut: Future01> Future01CompatExt for Fut {}
 
-/// Extension trait for futures 0.1 [`Future`][futures::Future]
+/// Extension trait for futures 0.1 [`Future`](futures::future::Future)
 pub trait Future01CompatExt: Future01 {
-    /// Converts a futures 0.1 [`Future<Item = T, Error = E>`][futures::Future]
-    /// into a futures 0.3 [`Future<Output = Result<T,
-    /// E>>`][futures_core::Future].
+    /// Converts a futures 0.1
+    /// [`Future<Item = T, Error = E>`](futures::future::Future)
+    /// into a futures 0.3
+    /// [`Future<Output = Result<T, E>>`](futures_core::future::Future).
     fn compat(self) -> Compat<Self, ()> where Self: Sized {
         Compat::new(self, None)
     }
diff --git a/rustc_deps/vendor/futures-util-preview/src/compat/mod.rs b/rustc_deps/vendor/futures-util-preview/src/compat/mod.rs
index 89636ad..702de3a 100644
--- a/rustc_deps/vendor/futures-util-preview/src/compat/mod.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/compat/mod.rs
@@ -5,7 +5,7 @@
 mod executor;
 pub use self::executor::{Executor01CompatExt, Executor01Future, Executor01As03};
 
-mod compat;
+#[allow(module_inception)] mod compat;
 pub use self::compat::Compat;
 
 mod compat01to03;
@@ -20,4 +20,4 @@
 #[cfg(feature = "tokio-compat")]
 mod tokio;
 #[cfg(feature = "tokio-compat")]
-pub use self::tokio::TokioDefaultSpawn;
+pub use self::tokio::TokioDefaultSpawner;
diff --git a/rustc_deps/vendor/futures-util-preview/src/compat/stream01ext.rs b/rustc_deps/vendor/futures-util-preview/src/compat/stream01ext.rs
index c83bf16..097894c 100644
--- a/rustc_deps/vendor/futures-util-preview/src/compat/stream01ext.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/compat/stream01ext.rs
@@ -3,11 +3,12 @@
 
 impl<St: Stream01> Stream01CompatExt for St {}
 
-/// Extension trait for futures 0.1 [`Stream`][futures::Stream]
+/// Extension trait for futures 0.1 [`Stream`](futures::stream::Stream)
 pub trait Stream01CompatExt: Stream01 {
-    /// Converts a futures 0.1 [`Stream<Item = T, Error = E>`][futures::Stream]
-    /// into a futures 0.3 [`Stream<Item = Result<T,
-    /// E>>`][futures_core::Stream].
+    /// Converts a futures 0.1
+    /// [`Stream<Item = T, Error = E>`](futures::stream::Stream)
+    /// into a futures 0.3
+    /// [`Stream<Item = Result<T, E>>`](futures_core::stream::Stream).
     fn compat(self) -> Compat<Self, ()> where Self: Sized {
         Compat::new(self, None)
     }
diff --git a/rustc_deps/vendor/futures-util-preview/src/compat/tokio.rs b/rustc_deps/vendor/futures-util-preview/src/compat/tokio.rs
index 4553605..b7e4ccc 100644
--- a/rustc_deps/vendor/futures-util-preview/src/compat/tokio.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/compat/tokio.rs
@@ -4,7 +4,7 @@
 use tokio_executor::{DefaultExecutor, Executor as TokioExecutor};
 
 /// A spawner that delegates to `tokio`'s
-/// [`DefaultExecutor`][tokio_executor::DefaultExecutor], will panic if used in
+/// [`DefaultExecutor`](tokio_executor::DefaultExecutor), will panic if used in
 /// the context of a task that is not running on `tokio`'s executor.
 ///
 /// *NOTE* The future of this struct in `futures` is uncertain. It may be
@@ -14,43 +14,37 @@
 /// # Examples
 ///
 /// ```ignore
-/// #![feature(async_await, await_macro, futures_api, pin)]
-/// use futures::spawn;
-/// use futures::channel::oneshot;
-/// use futures::compat::TokioDefaultSpawn;
-/// use futures::executor::block_on;
+/// #![feature(async_await, await_macro, futures_api)]
 /// use futures::future::{FutureExt, TryFutureExt};
-/// use std::thread;
+/// use futures::spawn;
+/// use futures::compat::TokioDefaultSpawner;
+/// # let (tx, rx) = futures::channel::oneshot::channel();
 ///
-/// let (sender, receiver) = oneshot::channel::<i32>();
+/// let future03 = async {
+///     println!("Running on the pool");
+///     spawn!(async {
+///         println!("Spawned!");
+///         # tx.send(42).unwrap();
+///     }).unwrap();
+/// };
 ///
-/// thread::spawn(move || {
-///     let future = async move {
-///         spawn!(async move {
-///             sender.send(5).unwrap()
-///         }).unwrap();
+/// let future01 = future03
+///     .unit_error() // Make it a TryFuture
+///     .boxed()  // Make it Unpin
+///     .compat(TokioDefaultSpawner);
 ///
-///     };
-///
-///     let compat_future = future
-///         .boxed()
-///         .unit_error()
-///         .compat(TokioDefaultSpawn);
-///
-///     tokio::run(compat_future);
-/// }).join().unwrap();
-///
-/// assert_eq!(block_on(receiver).unwrap(), 5);
+/// tokio::run(future01);
+/// # futures::executor::block_on(rx).unwrap();
 /// ```
 #[derive(Debug, Copy, Clone)]
-pub struct TokioDefaultSpawn;
+pub struct TokioDefaultSpawner;
 
-impl Spawn for TokioDefaultSpawn {
+impl Spawn for TokioDefaultSpawner {
     fn spawn_obj(
         &mut self,
-        task: FutureObj<'static, ()>,
+        future: FutureObj<'static, ()>,
     ) -> Result<(), SpawnObjError> {
-        let fut = Box::new(task.unit_error().compat(*self));
+        let fut = Box::new(future.unit_error().compat(*self));
         DefaultExecutor::current().spawn(fut).map_err(|err| {
             panic!(
                 "tokio failed to spawn and doesn't return the future: {:?}",
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/abortable.rs b/rustc_deps/vendor/futures-util-preview/src/future/abortable.rs
index f4786a6..35ba071 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/abortable.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/abortable.rs
@@ -3,7 +3,7 @@
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::sync::Arc;
 use std::sync::atomic::{AtomicBool, Ordering};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/catch_unwind.rs b/rustc_deps/vendor/futures-util-preview/src/future/catch_unwind.rs
index 6c6263c..0b26793 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/catch_unwind.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/catch_unwind.rs
@@ -2,7 +2,7 @@
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
 use std::any::Any;
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::panic::{catch_unwind, UnwindSafe, AssertUnwindSafe};
 use std::prelude::v1::*;
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/chain.rs b/rustc_deps/vendor/futures-util-preview/src/future/chain.rs
index 026abd7..204db27 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/chain.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/chain.rs
@@ -1,10 +1,10 @@
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 
 #[must_use = "futures do nothing unless polled"]
 #[derive(Debug)]
-crate enum Chain<Fut1, Fut2, Data> {
+pub(crate) enum Chain<Fut1, Fut2, Data> {
     First(Fut1, Option<Data>),
     Second(Fut2),
     Empty,
@@ -14,11 +14,11 @@
     where Fut1: Future,
           Fut2: Future,
 {
-    crate fn new(fut1: Fut1, data: Data) -> Chain<Fut1, Fut2, Data> {
+    pub(crate) fn new(fut1: Fut1, data: Data) -> Chain<Fut1, Fut2, Data> {
         Chain::First(fut1, Some(data))
     }
 
-    crate fn poll<F>(
+    pub(crate) fn poll<F>(
         self: PinMut<Self>,
         cx: &mut task::Context,
         f: F,
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/empty.rs b/rustc_deps/vendor/futures-util-preview/src/future/empty.rs
index e2c796b..a5b89b6 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/empty.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/empty.rs
@@ -1,5 +1,5 @@
 use core::marker;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/flatten.rs b/rustc_deps/vendor/futures-util-preview/src/future/flatten.rs
index 58b36ab..66a131a 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/flatten.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/flatten.rs
@@ -1,6 +1,6 @@
 use super::chain::Chain;
 use core::fmt;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/flatten_stream.rs b/rustc_deps/vendor/futures-util-preview/src/future/flatten_stream.rs
index a5e1a51..ace1bc7 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/flatten_stream.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/flatten_stream.rs
@@ -1,5 +1,5 @@
 use core::fmt;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/fuse.rs b/rustc_deps/vendor/futures-util-preview/src/future/fuse.rs
index 1655534..b421063 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/fuse.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/fuse.rs
@@ -1,4 +1,4 @@
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/inspect.rs b/rustc_deps/vendor/futures-util-preview/src/future/inspect.rs
index 2680c29..fd8307d 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/inspect.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/inspect.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/into_stream.rs b/rustc_deps/vendor/futures-util-preview/src/future/into_stream.rs
index 0bc388e..57e25a0 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/into_stream.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/into_stream.rs
@@ -1,4 +1,4 @@
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/join.rs b/rustc_deps/vendor/futures-util-preview/src/future/join.rs
index e2e66a6..1ace2bd 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/join.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/join.rs
@@ -2,7 +2,7 @@
 
 use crate::future::{MaybeDone, maybe_done};
 use core::fmt;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
@@ -46,7 +46,7 @@
         impl<$($Fut: Future),*> Future for $Join<$($Fut),*> {
             type Output = ($($Fut::Output),*);
 
-            #[allow(useless_let_if_seq)]
+            #[allow(clippy::useless_let_if_seq)]
             fn poll(
                 mut self: PinMut<Self>, cx: &mut task::Context
             ) -> Poll<Self::Output> {
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/lazy.rs b/rustc_deps/vendor/futures-util-preview/src/future/lazy.rs
index 3ac24f3..90b8aee 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/lazy.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/lazy.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/map.rs b/rustc_deps/vendor/futures-util-preview/src/future/map.rs
index 569de00..b77be15 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/map.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/map.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/maybe_done.rs b/rustc_deps/vendor/futures-util-preview/src/future/maybe_done.rs
index 7611424..3ab729c 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/maybe_done.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/maybe_done.rs
@@ -1,7 +1,8 @@
 //! Definition of the MaybeDone combinator
 
 use core::marker::Unpin;
-use core::mem::{self, PinMut};
+use core::mem;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 
@@ -50,7 +51,7 @@
     /// future has been completed and [`take_output`](MaybeDone::take_output)
     /// has not yet been called.
     #[inline]
-    #[allow(needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
+    #[allow(clippy::needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
     pub fn output_mut<'a>(self: PinMut<'a, Self>) -> Option<&'a mut Fut::Output> {
         unsafe {
             let this = PinMut::get_mut_unchecked(self);
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/mod.rs b/rustc_deps/vendor/futures-util-preview/src/future/mod.rs
index ff6fd6d..8597b00 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/mod.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/mod.rs
@@ -4,7 +4,7 @@
 //! including the `FutureExt` trait which adds methods to `Future` types.
 
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll, Spawn};
@@ -26,7 +26,7 @@
 pub use self::poll_fn::{poll_fn, PollFn};
 
 mod ready;
-pub use self::ready::{ready, Ready};
+pub use self::ready::{ready, ok, err, Ready};
 
 // Combinators
 mod flatten;
@@ -65,10 +65,10 @@
 
 // Implementation details
 mod chain;
-crate use self::chain::Chain;
+pub(crate) use self::chain::Chain;
 
 if_std! {
-    use std::boxed::PinBox;
+    use std::pin::PinBox;
 
     mod abortable;
     pub use self::abortable::{abortable, Abortable, AbortHandle, AbortRegistration, Aborted};
@@ -578,10 +578,6 @@
     /// The shared() method provides a method to convert any future into a
     /// cloneable future. It enables a future to be polled by multiple threads.
     ///
-    /// The returned `Shared` future resolves with `Arc<Self::Output>`,
-    /// which implements `Deref` to allow shared access to the underlying
-    /// result. Ownership of the underlying value cannot currently be reclaimed.
-    ///
     /// This method is only available when the `std` feature of this
     /// library is activated, and it is activated by default.
     ///
@@ -596,8 +592,8 @@
     /// let shared1 = future.shared();
     /// let shared2 = shared1.clone();
     ///
-    /// assert_eq!(6, *await!(shared1));
-    /// assert_eq!(6, *await!(shared2));
+    /// assert_eq!(6, await!(shared1));
+    /// assert_eq!(6, await!(shared2));
     /// # });
     /// ```
     ///
@@ -614,14 +610,15 @@
     /// let shared1 = future.shared();
     /// let shared2 = shared1.clone();
     /// let join_handle = thread::spawn(move || {
-    ///     assert_eq!(6, *block_on(shared2));
+    ///     assert_eq!(6, block_on(shared2));
     /// });
-    /// assert_eq!(6, *block_on(shared1));
+    /// assert_eq!(6, block_on(shared1));
     /// join_handle.join().unwrap();
     /// ```
     #[cfg(feature = "std")]
     fn shared(self) -> Shared<Self>
-        where Self: Sized
+    where
+        Self: Sized,
     {
         Shared::new(self)
     }
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/option.rs b/rustc_deps/vendor/futures-util-preview/src/future/option.rs
index 1b05950..787dee5 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/option.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/option.rs
@@ -1,6 +1,6 @@
 //! Definition of the `Option` (optional step) combinator
 
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/poll_fn.rs b/rustc_deps/vendor/futures-util-preview/src/future/poll_fn.rs
index 507f53e..80d2a55 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/poll_fn.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/poll_fn.rs
@@ -1,7 +1,7 @@
 //! Definition of the `PollFn` adapter combinator
 
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/ready.rs b/rustc_deps/vendor/futures-util-preview/src/future/ready.rs
index 9d95016..01b062c 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/ready.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/ready.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 
@@ -37,3 +37,37 @@
 pub fn ready<T>(t: T) -> Ready<T> {
     Ready(Some(t))
 }
+
+/// Create a future that is immediately ready with a success value.
+///
+/// # Examples
+///
+/// ```
+/// #![feature(async_await, await_macro, futures_api)]
+/// # futures::executor::block_on(async {
+/// use futures::future;
+///
+/// let a = future::ok::<i32, i32>(1);
+/// assert_eq!(await!(a), Ok(1));
+/// # });
+/// ```
+pub fn ok<T, E>(t: T) -> Ready<Result<T, E>> {
+    Ready(Some(Ok(t)))
+}
+
+/// Create a future that is immediately ready with an error value.
+///
+/// # Examples
+///
+/// ```
+/// #![feature(async_await, await_macro, futures_api)]
+/// # futures::executor::block_on(async {
+/// use futures::future;
+///
+/// let a = future::err::<i32, i32>(1);
+/// assert_eq!(await!(a), Err(1));
+/// # });
+/// ```
+pub fn err<T, E>(err: E) -> Ready<Result<T, E>> {
+    Ready(Some(Err(err)))
+}
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/shared.rs b/rustc_deps/vendor/futures-util-preview/src/future/shared.rs
index 1e7ebf8..7ce1179 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/shared.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/shared.rs
@@ -4,7 +4,7 @@
 use std::fmt;
 use std::cell::UnsafeCell;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::sync::{Arc, Mutex};
 use std::sync::atomic::AtomicUsize;
 use std::sync::atomic::Ordering::SeqCst;
@@ -50,7 +50,7 @@
 
 enum FutureOrOutput<Fut: Future> {
     Future(Fut),
-    Output(Arc<Fut::Output>),
+    Output(Fut::Output),
 }
 
 unsafe impl<Fut> Send for Inner<Fut>
@@ -88,15 +88,17 @@
     }
 }
 
-impl<Fut> Shared<Fut> where Fut: Future {
+impl<Fut> Shared<Fut>
+where
+    Fut: Future,
+    Fut::Output: Clone,
+{
     /// If any clone of this `Shared` has completed execution, returns its result immediately
     /// without blocking. Otherwise, returns None without triggering the work represented by
     /// this `Shared`.
-    pub fn peek(&self) -> Option<Arc<Fut::Output>> {
+    pub fn peek(&self) -> Option<Fut::Output> {
         match self.inner.notifier.state.load(SeqCst) {
-            COMPLETE => {
-                Some(unsafe { self.clone_output() })
-            }
+            COMPLETE => Some(unsafe { self.clone_output() }),
             POISONED => panic!("inner future panicked during poll"),
             _ => None,
         }
@@ -133,7 +135,7 @@
 
     /// Safety: callers must first ensure that `self.inner.state`
     /// is `COMPLETE`
-    unsafe fn clone_output(&self) -> Arc<Fut::Output> {
+    unsafe fn clone_output(&self) -> Fut::Output {
         if let FutureOrOutput::Output(item) = &*self.inner.future_or_output.get() {
             item.clone()
         } else {
@@ -142,8 +144,11 @@
     }
 }
 
-impl<Fut: Future> Future for Shared<Fut> {
-    type Output = Arc<Fut::Output>;
+impl<Fut: Future> Future for Shared<Fut>
+where
+    Fut::Output: Clone,
+{
+    type Output = Fut::Output;
 
     fn poll(mut self: PinMut<Self>, cx: &mut task::Context) -> Poll<Self::Output> {
         let this = &mut *self;
@@ -210,7 +215,6 @@
                     }
                 }
                 Poll::Ready(output) => {
-                    let output = Arc::new(output);
                     unsafe {
                         *this.inner.future_or_output.get() =
                             FutureOrOutput::Output(output.clone());
@@ -232,7 +236,10 @@
     }
 }
 
-impl<Fut> Clone for Shared<Fut> where Fut: Future {
+impl<Fut> Clone for Shared<Fut>
+where
+    Fut: Future,
+{
     fn clone(&self) -> Self {
         Shared {
             inner: self.inner.clone(),
@@ -241,7 +248,10 @@
     }
 }
 
-impl<Fut> Drop for Shared<Fut> where Fut: Future {
+impl<Fut> Drop for Shared<Fut>
+where
+    Fut: Future,
+{
     fn drop(&mut self) {
         if self.waker_key != NULL_WAKER_KEY {
             if let Ok(mut wakers) = self.inner.notifier.wakers.lock() {
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/then.rs b/rustc_deps/vendor/futures-util-preview/src/future/then.rs
index ad0400f..8f73512 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/then.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/then.rs
@@ -1,5 +1,5 @@
 use super::Chain;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/unit_error.rs b/rustc_deps/vendor/futures-util-preview/src/future/unit_error.rs
index 5a2974b..3b57e9a 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/unit_error.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/unit_error.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/future/with_spawner.rs b/rustc_deps/vendor/futures-util-preview/src/future/with_spawner.rs
index c3227bd..c6d23d6 100644
--- a/rustc_deps/vendor/futures-util-preview/src/future/with_spawner.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/future/with_spawner.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll, Spawn};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/io/close.rs b/rustc_deps/vendor/futures-util-preview/src/io/close.rs
index 33d2fd0..3d1010f 100644
--- a/rustc_deps/vendor/futures-util-preview/src/io/close.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/io/close.rs
@@ -3,7 +3,7 @@
 use futures_io::AsyncWrite;
 use std::io;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 /// A future used to fully close an I/O object.
 ///
diff --git a/rustc_deps/vendor/futures-util-preview/src/io/copy_into.rs b/rustc_deps/vendor/futures-util-preview/src/io/copy_into.rs
index ea71ff6..601859a 100644
--- a/rustc_deps/vendor/futures-util-preview/src/io/copy_into.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/io/copy_into.rs
@@ -4,7 +4,7 @@
 use std::boxed::Box;
 use std::io;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 /// A future which will copy all data from a reader into a writer.
 ///
diff --git a/rustc_deps/vendor/futures-util-preview/src/io/flush.rs b/rustc_deps/vendor/futures-util-preview/src/io/flush.rs
index 269cbf4..aba3475 100644
--- a/rustc_deps/vendor/futures-util-preview/src/io/flush.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/io/flush.rs
@@ -2,7 +2,7 @@
 use futures_core::task::{self, Poll};
 use std::io;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 use futures_io::AsyncWrite;
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/io/read.rs b/rustc_deps/vendor/futures-util-preview/src/io/read.rs
index fd3a725..5a30cd7 100644
--- a/rustc_deps/vendor/futures-util-preview/src/io/read.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/io/read.rs
@@ -3,7 +3,7 @@
 use futures_core::task::{self, Poll};
 use std::io;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 /// A future which can be used to easily read available number of bytes to fill
 /// a buffer.
diff --git a/rustc_deps/vendor/futures-util-preview/src/io/read_exact.rs b/rustc_deps/vendor/futures-util-preview/src/io/read_exact.rs
index c57753e..4a34ea7 100644
--- a/rustc_deps/vendor/futures-util-preview/src/io/read_exact.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/io/read_exact.rs
@@ -3,7 +3,8 @@
 use futures_core::task::{self, Poll};
 use std::io;
 use std::marker::Unpin;
-use std::mem::{self, PinMut};
+use std::mem;
+use std::pin::PinMut;
 
 /// A future which can be used to easily read exactly enough bytes to fill
 /// a buffer.
diff --git a/rustc_deps/vendor/futures-util-preview/src/io/read_to_end.rs b/rustc_deps/vendor/futures-util-preview/src/io/read_to_end.rs
index be0a1ca..1294e7b 100644
--- a/rustc_deps/vendor/futures-util-preview/src/io/read_to_end.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/io/read_to_end.rs
@@ -3,7 +3,7 @@
 use futures_io::AsyncRead;
 use std::io;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::vec::Vec;
 
 /// A future which can be used to easily read the entire contents of a stream
diff --git a/rustc_deps/vendor/futures-util-preview/src/io/split.rs b/rustc_deps/vendor/futures-util-preview/src/io/split.rs
index cd38d71..4f1e84b 100644
--- a/rustc_deps/vendor/futures-util-preview/src/io/split.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/io/split.rs
@@ -2,7 +2,7 @@
 use futures_core::task::{self, Poll};
 use futures_io::{AsyncRead, AsyncWrite, IoVec};
 use std::io;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 /// The readable half of an object returned from `AsyncRead::split`.
 #[derive(Debug)]
diff --git a/rustc_deps/vendor/futures-util-preview/src/io/write_all.rs b/rustc_deps/vendor/futures-util-preview/src/io/write_all.rs
index 754e730..f8147ad 100644
--- a/rustc_deps/vendor/futures-util-preview/src/io/write_all.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/io/write_all.rs
@@ -3,7 +3,8 @@
 use futures_io::AsyncWrite;
 use std::io;
 use std::marker::Unpin;
-use std::mem::{self, PinMut};
+use std::mem;
+use std::pin::PinMut;
 
 /// A future used to write the entire contents of some data to a stream.
 ///
diff --git a/rustc_deps/vendor/futures-util-preview/src/lib.rs b/rustc_deps/vendor/futures-util-preview/src/lib.rs
index 81116c1..56ac3c6 100644
--- a/rustc_deps/vendor/futures-util-preview/src/lib.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/lib.rs
@@ -2,15 +2,15 @@
 //! and the `AsyncRead` and `AsyncWrite` traits.
 
 #![feature(async_await, pin, arbitrary_self_types, futures_api)]
+#![feature(tool_lints)]
 #![cfg_attr(feature = "std", feature(await_macro))]
 #![cfg_attr(feature = "nightly", feature(cfg_target_has_atomic))]
 
 #![cfg_attr(not(feature = "std"), no_std)]
 #![warn(missing_docs, missing_debug_implementations)]
 #![deny(bare_trait_objects)]
-#![allow(unknown_lints)]
 
-#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.3/futures_util")]
+#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.5/futures_util")]
 
 macro_rules! if_std {
     ($($i:item)*) => ($(
diff --git a/rustc_deps/vendor/futures-util-preview/src/lock.rs b/rustc_deps/vendor/futures-util-preview/src/lock.rs
index 9c9b907..773b583 100644
--- a/rustc_deps/vendor/futures-util-preview/src/lock.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/lock.rs
@@ -9,8 +9,9 @@
 use std::error::Error;
 use std::fmt;
 use std::marker::Unpin;
-use std::mem::{self, PinMut};
+use std::mem;
 use std::ops::{Deref, DerefMut};
+use std::pin::PinMut;
 use std::sync::Arc;
 use std::sync::atomic::AtomicUsize;
 use std::sync::atomic::Ordering::SeqCst;
diff --git a/rustc_deps/vendor/futures-util-preview/src/sink/buffer.rs b/rustc_deps/vendor/futures-util-preview/src/sink/buffer.rs
index 792fc74..44d7736 100644
--- a/rustc_deps/vendor/futures-util-preview/src/sink/buffer.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/sink/buffer.rs
@@ -4,7 +4,7 @@
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
 use std::collections::VecDeque;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 /// Sink for the `Sink::buffer` combinator, which buffers up to some fixed
 /// number of values when the underlying sink is unable to accept them.
diff --git a/rustc_deps/vendor/futures-util-preview/src/sink/close.rs b/rustc_deps/vendor/futures-util-preview/src/sink/close.rs
index 5c5965f..e88cf2a 100644
--- a/rustc_deps/vendor/futures-util-preview/src/sink/close.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/sink/close.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 use futures_sink::Sink;
diff --git a/rustc_deps/vendor/futures-util-preview/src/sink/drain.rs b/rustc_deps/vendor/futures-util-preview/src/sink/drain.rs
index 9940bfb..cbc56aa 100644
--- a/rustc_deps/vendor/futures-util-preview/src/sink/drain.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/sink/drain.rs
@@ -1,6 +1,6 @@
 use core::fmt;
 use core::marker::PhantomData;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::task::{self, Poll};
 use futures_sink::Sink;
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/sink/err_into.rs b/rustc_deps/vendor/futures-util-preview/src/sink/err_into.rs
index d30dd45..4d17738 100644
--- a/rustc_deps/vendor/futures-util-preview/src/sink/err_into.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/sink/err_into.rs
@@ -1,5 +1,5 @@
 use crate::sink::{SinkExt, SinkMapErr};
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use futures_sink::{Sink};
diff --git a/rustc_deps/vendor/futures-util-preview/src/sink/fanout.rs b/rustc_deps/vendor/futures-util-preview/src/sink/fanout.rs
index 875cd4d..87a39f8 100644
--- a/rustc_deps/vendor/futures-util-preview/src/sink/fanout.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/sink/fanout.rs
@@ -1,5 +1,5 @@
 use core::fmt::{Debug, Formatter, Result as FmtResult};
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::task::{self, Poll};
 use futures_sink::Sink;
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/sink/flush.rs b/rustc_deps/vendor/futures-util-preview/src/sink/flush.rs
index ad48165..42ef6ef 100644
--- a/rustc_deps/vendor/futures-util-preview/src/sink/flush.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/sink/flush.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 use futures_sink::Sink;
diff --git a/rustc_deps/vendor/futures-util-preview/src/sink/map_err.rs b/rustc_deps/vendor/futures-util-preview/src/sink/map_err.rs
index 62c56d1..15bc044 100644
--- a/rustc_deps/vendor/futures-util-preview/src/sink/map_err.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/sink/map_err.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use futures_sink::{Sink};
@@ -34,7 +34,7 @@
     }
 
     /// Get a pinned reference to the inner sink.
-    #[allow(needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
+    #[allow(clippy::needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
     pub fn get_pin_mut<'a>(self: PinMut<'a, Self>) -> PinMut<'a, Si> {
         unsafe { PinMut::map_unchecked(self, |x| &mut x.sink) }
     }
@@ -63,7 +63,7 @@
         mut self: PinMut<Self>,
         cx: &mut task::Context,
     ) -> Poll<Result<(), Self::SinkError>> {
-        #[allow(redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
+        #[allow(clippy::redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
         self.sink().poll_ready(cx).map_err(|e| self.take_f()(e))
     }
 
@@ -71,7 +71,7 @@
         mut self: PinMut<Self>,
         item: Self::SinkItem,
     ) -> Result<(), Self::SinkError> {
-        #[allow(redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
+        #[allow(clippy::redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
         self.sink().start_send(item).map_err(|e| self.take_f()(e))
     }
 
@@ -79,7 +79,7 @@
         mut self: PinMut<Self>,
         cx: &mut task::Context,
     ) -> Poll<Result<(), Self::SinkError>> {
-        #[allow(redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
+        #[allow(clippy::redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
         self.sink().poll_flush(cx).map_err(|e| self.take_f()(e))
     }
 
@@ -87,7 +87,7 @@
         mut self: PinMut<Self>,
         cx: &mut task::Context,
     ) -> Poll<Result<(), Self::SinkError>> {
-        #[allow(redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
+        #[allow(clippy::redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
         self.sink().poll_close(cx).map_err(|e| self.take_f()(e))
     }
 }
diff --git a/rustc_deps/vendor/futures-util-preview/src/sink/send.rs b/rustc_deps/vendor/futures-util-preview/src/sink/send.rs
index 0359ad0..3d09e3d 100644
--- a/rustc_deps/vendor/futures-util-preview/src/sink/send.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/sink/send.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::task::{self, Poll};
 use futures_sink::Sink;
diff --git a/rustc_deps/vendor/futures-util-preview/src/sink/send_all.rs b/rustc_deps/vendor/futures-util-preview/src/sink/send_all.rs
index 74be381..f6f5738 100644
--- a/rustc_deps/vendor/futures-util-preview/src/sink/send_all.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/sink/send_all.rs
@@ -1,6 +1,6 @@
 use crate::stream::{StreamExt, Fuse};
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/sink/with.rs b/rustc_deps/vendor/futures-util-preview/src/sink/with.rs
index bc3a082..dc8f064 100644
--- a/rustc_deps/vendor/futures-util-preview/src/sink/with.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/sink/with.rs
@@ -1,5 +1,6 @@
 use core::marker::{Unpin, PhantomData};
-use core::mem::{self, PinMut};
+use core::mem;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
@@ -59,7 +60,8 @@
 }
 
 impl<Fut, T> State<Fut, T> {
-    #[allow(needless_lifetimes, wrong_self_convention)] // https://github.com/rust-lang/rust/issues/52675
+    #[allow(clippy::needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
+    #[allow(clippy::wrong_self_convention)]
     fn as_pin_mut<'a>(
         self: PinMut<'a, Self>,
     ) -> State<PinMut<'a, Fut>, PinMut<'a, T>> {
diff --git a/rustc_deps/vendor/futures-util-preview/src/sink/with_flat_map.rs b/rustc_deps/vendor/futures-util-preview/src/sink/with_flat_map.rs
index 25cb1ad..15cb902 100644
--- a/rustc_deps/vendor/futures-util-preview/src/sink/with_flat_map.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/sink/with_flat_map.rs
@@ -1,5 +1,5 @@
 use core::marker::{Unpin, PhantomData};
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use futures_sink::Sink;
@@ -61,7 +61,7 @@
     }
 
     /// Get a pinned mutable reference to the inner sink.
-    #[allow(needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
+    #[allow(clippy::needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
     pub fn get_pin_mut<'a>(self: PinMut<'a, Self>) -> PinMut<'a, Si> {
         unsafe { PinMut::map_unchecked(self, |x| &mut x.sink) }
     }
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/buffer_unordered.rs b/rustc_deps/vendor/futures-util-preview/src/stream/buffer_unordered.rs
index c9fa525..3455f20 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/buffer_unordered.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/buffer_unordered.rs
@@ -6,7 +6,7 @@
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
 use std::fmt;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 /// An adaptor for a stream of futures to execute the futures concurrently, if
 /// possible, delivering results as they become available.
@@ -85,7 +85,7 @@
     ///
     /// Note that care must be taken to avoid tampering with the state of the
     /// stream which may otherwise confuse this combinator.
-    #[allow(needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
+    #[allow(clippy::needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
     pub fn get_pin_mut<'a>(self: PinMut<'a, Self>) -> PinMut<'a, St> {
         unsafe { PinMut::map_unchecked(self, |x| x.get_mut()) }
     }
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/buffered.rs b/rustc_deps/vendor/futures-util-preview/src/stream/buffered.rs
index 68832eb..a3bf487 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/buffered.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/buffered.rs
@@ -6,7 +6,7 @@
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
 use std::fmt;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 /// An adaptor for a stream of futures to execute the futures concurrently, if
 /// possible.
@@ -81,7 +81,7 @@
     ///
     /// Note that care must be taken to avoid tampering with the state of the
     /// stream which may otherwise confuse this combinator.
-    #[allow(needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
+    #[allow(clippy::needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
     pub fn get_pin_mut<'a>(self: PinMut<'a, Self>) -> PinMut<'a, St> {
         unsafe { PinMut::map_unchecked(self, |x| x.get_mut()) }
     }
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/catch_unwind.rs b/rustc_deps/vendor/futures-util-preview/src/stream/catch_unwind.rs
index 6785a33..579fa34 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/catch_unwind.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/catch_unwind.rs
@@ -2,7 +2,7 @@
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
 use std::any::Any;
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::panic::{catch_unwind, UnwindSafe, AssertUnwindSafe};
 use std::prelude::v1::*;
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/chain.rs b/rustc_deps/vendor/futures-util-preview/src/stream/chain.rs
index 8f11e78..0da35f4 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/chain.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/chain.rs
@@ -1,4 +1,4 @@
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/chunks.rs b/rustc_deps/vendor/futures-util-preview/src/stream/chunks.rs
index 3f28c3b..9aecc95 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/chunks.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/chunks.rs
@@ -3,7 +3,8 @@
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
 use std::marker::Unpin;
-use std::mem::{self, PinMut};
+use std::mem;
+use std::pin::PinMut;
 use std::prelude::v1::*;
 
 /// An adaptor that chunks up elements in a vector.
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/collect.rs b/rustc_deps/vendor/futures-util-preview/src/stream/collect.rs
index c3dda9d..991d6fb 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/collect.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/collect.rs
@@ -3,7 +3,8 @@
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
 use std::marker::Unpin;
-use std::mem::{self, PinMut};
+use std::mem;
+use std::pin::PinMut;
 use std::prelude::v1::*;
 
 /// A future which collects all of the values of a stream into a vector.
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/concat.rs b/rustc_deps/vendor/futures-util-preview/src/stream/concat.rs
index 384f01b..39a7ac8 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/concat.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/concat.rs
@@ -1,6 +1,6 @@
 use core::fmt::{Debug, Formatter, Result as FmtResult};
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use core::default::Default;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/disabled/select_all.rs b/rustc_deps/vendor/futures-util-preview/src/stream/disabled/select_all.rs
index 97727b1..5360402 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/disabled/select_all.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/disabled/select_all.rs
@@ -1,7 +1,7 @@
 //! An unbounded set of streams
 
 use std::fmt::{self, Debug};
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 use futures_core::{Poll, Stream};
 use futures_core::task;
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/empty.rs b/rustc_deps/vendor/futures-util-preview/src/stream/empty.rs
index cfb9603..5571c64 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/empty.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/empty.rs
@@ -1,5 +1,5 @@
 use core::marker::{Unpin, PhantomData};
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/filter.rs b/rustc_deps/vendor/futures-util-preview/src/stream/filter.rs
index f1b7132..75489fc 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/filter.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/filter.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/filter_map.rs b/rustc_deps/vendor/futures-util-preview/src/stream/filter_map.rs
index 35d2c57..acb6423 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/filter_map.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/filter_map.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/flatten.rs b/rustc_deps/vendor/futures-util-preview/src/stream/flatten.rs
index b027b5b..cd70f72 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/flatten.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/flatten.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/fold.rs b/rustc_deps/vendor/futures-util-preview/src/stream/fold.rs
index e65a23d..bb2e8fb 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/fold.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/fold.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/for_each.rs b/rustc_deps/vendor/futures-util-preview/src/stream/for_each.rs
index 5dcfd1a..a7296b8 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/for_each.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/for_each.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/for_each_concurrent.rs b/rustc_deps/vendor/futures-util-preview/src/stream/for_each_concurrent.rs
index 3d42aee..5363a9e 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/for_each_concurrent.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/for_each_concurrent.rs
@@ -1,6 +1,6 @@
 use crate::stream::{FuturesUnordered, StreamExt};
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use core::num::NonZeroUsize;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/forward.rs b/rustc_deps/vendor/futures-util-preview/src/stream/forward.rs
index 603612e..ab6bc32 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/forward.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/forward.rs
@@ -1,6 +1,6 @@
 use crate::stream::{StreamExt, Fuse};
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/fuse.rs b/rustc_deps/vendor/futures-util-preview/src/stream/fuse.rs
index 3d1ed5a..3550d83 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/fuse.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/fuse.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use futures_sink::Sink;
@@ -56,7 +56,7 @@
     ///
     /// Note that care must be taken to avoid tampering with the state of the
     /// stream which may otherwise confuse this combinator.
-    #[allow(needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
+    #[allow(clippy::needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
     pub fn get_pin_mut<'a>(self: PinMut<'a, Self>) -> PinMut<'a, St> {
         unsafe { PinMut::map_unchecked(self, |x| x.get_mut()) }
     }
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/futures_ordered.rs b/rustc_deps/vendor/futures-util-preview/src/stream/futures_ordered.rs
index 5e77051..857577e 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/futures_ordered.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/futures_ordered.rs
@@ -8,7 +8,7 @@
 use std::fmt::{self, Debug};
 use std::iter::FromIterator;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 #[must_use = "futures do nothing unless polled"]
 #[derive(Debug)]
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/futures_unordered/iter.rs b/rustc_deps/vendor/futures-util-preview/src/stream/futures_unordered/iter.rs
index 647b560..53ca334 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/futures_unordered/iter.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/futures_unordered/iter.rs
@@ -1,7 +1,7 @@
 use super::FuturesUnordered;
 use super::task::Task;
 use std::marker::{PhantomData, Unpin};
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 #[derive(Debug)]
 /// Mutable iterator over all futures in the unordered set.
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/futures_unordered/mod.rs b/rustc_deps/vendor/futures-util-preview/src/stream/futures_unordered/mod.rs
index 2352d2e..b1102ca 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/futures_unordered/mod.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/futures_unordered/mod.rs
@@ -8,7 +8,8 @@
 use std::fmt::{self, Debug};
 use std::iter::FromIterator;
 use std::marker::{PhantomData, Unpin};
-use std::mem::{self, PinMut};
+use std::mem;
+use std::pin::PinMut;
 use std::ptr;
 use std::sync::atomic::Ordering::SeqCst;
 use std::sync::atomic::{AtomicPtr, AtomicBool};
@@ -161,7 +162,7 @@
     }
 
     /// Returns an iterator that allows modifying each future in the set.
-    #[allow(needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
+    #[allow(clippy::needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
     pub fn iter_pin_mut<'a>(self: PinMut<'a, Self>) -> IterPinMut<'a, Fut> {
         IterPinMut {
             task: self.head_all,
@@ -189,7 +190,9 @@
         // `FuturesUnordered`, which correctly tracks `Fut`'s lifetimes and
         // such.
         unsafe {
-            drop((*task.future.get()).take());
+            // Set to `None` rather than `take()`ing to prevent moving the
+            // future.
+            *task.future.get() = None;
         }
 
         // If the queued flag was previously set, then it means that this task
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/inspect.rs b/rustc_deps/vendor/futures-util-preview/src/stream/inspect.rs
index 02c96a4..aee6bd0 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/inspect.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/inspect.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/into_future.rs b/rustc_deps/vendor/futures-util-preview/src/stream/into_future.rs
index 395be52..a864fc3 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/into_future.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/into_future.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/iter.rs b/rustc_deps/vendor/futures-util-preview/src/stream/iter.rs
index 375db18..3fe81d5 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/iter.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/iter.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/map.rs b/rustc_deps/vendor/futures-util-preview/src/stream/map.rs
index 7473dc9..9fd2ef2 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/map.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/map.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/mod.rs b/rustc_deps/vendor/futures-util-preview/src/stream/mod.rs
index aff7ec8..e524fc0 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/mod.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/mod.rs
@@ -4,7 +4,7 @@
 //! including the `StreamExt` trait which adds methods to `Stream` types.
 
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use either::Either;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
@@ -95,6 +95,7 @@
 if_std! {
     use std;
     use std::iter::Extend;
+    use std::pin::PinBox;
 
     mod buffer_unordered;
     pub use self::buffer_unordered::BufferUnordered;
@@ -776,6 +777,14 @@
         CatchUnwind::new(self)
     }
 
+    /// Wrap the stream in a Box, pinning it.
+    #[cfg(feature = "std")]
+    fn boxed(self) -> PinBox<Self>
+        where Self: Sized
+    {
+        PinBox::new(self)
+    }
+
     /// An adaptor for creating a buffered list of pending futures.
     ///
     /// If this stream's item can be converted into a future, then this adaptor
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/next.rs b/rustc_deps/vendor/futures-util-preview/src/stream/next.rs
index 1ca37a1..0d9537e 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/next.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/next.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/once.rs b/rustc_deps/vendor/futures-util-preview/src/stream/once.rs
index fc655cd..8139678 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/once.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/once.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/peek.rs b/rustc_deps/vendor/futures-util-preview/src/stream/peek.rs
index ca3de30..4cc1380 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/peek.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/peek.rs
@@ -1,6 +1,6 @@
 use crate::stream::{StreamExt, Fuse};
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/poll_fn.rs b/rustc_deps/vendor/futures-util-preview/src/stream/poll_fn.rs
index 1c55239..e327a3c 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/poll_fn.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/poll_fn.rs
@@ -1,7 +1,7 @@
 //! Definition of the `PollFn` combinator
 
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/repeat.rs b/rustc_deps/vendor/futures-util-preview/src/stream/repeat.rs
index aeaccb0..ab8245e 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/repeat.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/repeat.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/select.rs b/rustc_deps/vendor/futures-util-preview/src/stream/select.rs
index 36f1bc4..566db8e 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/select.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/select.rs
@@ -1,6 +1,6 @@
 use crate::stream::{StreamExt, Fuse};
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/skip.rs b/rustc_deps/vendor/futures-util-preview/src/stream/skip.rs
index ac718dc..8ae1403 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/skip.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/skip.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/skip_while.rs b/rustc_deps/vendor/futures-util-preview/src/stream/skip_while.rs
index 4bf4d0e..90ee4ec 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/skip_while.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/skip_while.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/split.rs b/rustc_deps/vendor/futures-util-preview/src/stream/split.rs
index 5dc0a46..10d71fc 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/split.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/split.rs
@@ -5,7 +5,7 @@
 use std::error::Error;
 use std::fmt;
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 use crate::lock::BiLock;
 
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/take.rs b/rustc_deps/vendor/futures-util-preview/src/stream/take.rs
index af96be6..d0e46ea 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/take.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/take.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/take_while.rs b/rustc_deps/vendor/futures-util-preview/src/stream/take_while.rs
index 6455958..a7939ce 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/take_while.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/take_while.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/then.rs b/rustc_deps/vendor/futures-util-preview/src/stream/then.rs
index 5411884..f9438ce 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/then.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/then.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/unfold.rs b/rustc_deps/vendor/futures-util-preview/src/stream/unfold.rs
index cbb4e58..6e32a94 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/unfold.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/unfold.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::Future;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/stream/zip.rs b/rustc_deps/vendor/futures-util-preview/src/stream/zip.rs
index d5e5af6..42886c5 100644
--- a/rustc_deps/vendor/futures-util-preview/src/stream/zip.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/stream/zip.rs
@@ -1,6 +1,6 @@
 use crate::stream::{StreamExt, Fuse};
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::Stream;
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
diff --git a/rustc_deps/vendor/futures-util-preview/src/task/atomic_waker.rs b/rustc_deps/vendor/futures-util-preview/src/task/atomic_waker.rs
old mode 100755
new mode 100644
index 272b239..6767ce0
--- a/rustc_deps/vendor/futures-util-preview/src/task/atomic_waker.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/task/atomic_waker.rs
@@ -174,7 +174,7 @@
     /// use futures::task::{self, Poll, AtomicWaker};
     /// use std::sync::atomic::AtomicBool;
     /// use std::sync::atomic::Ordering::SeqCst;
-    /// use std::mem::PinMut;
+    /// use std::pin::PinMut;
     ///
     /// struct Flag {
     ///     waker: AtomicWaker,
diff --git a/rustc_deps/vendor/futures-util-preview/src/task/local_waker_ref.rs b/rustc_deps/vendor/futures-util-preview/src/task/local_waker_ref.rs
index e846280..ea0e360 100644
--- a/rustc_deps/vendor/futures-util-preview/src/task/local_waker_ref.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/task/local_waker_ref.rs
@@ -1,4 +1,4 @@
-#![allow(cast_ptr_alignment)] // clippy is too strict here
+#![allow(clippy::cast_ptr_alignment)] // clippy is too strict here
 
 use std::marker::PhantomData;
 use std::ops::Deref;
diff --git a/rustc_deps/vendor/futures-util-preview/src/task/spawn/spawn_with_handle.rs b/rustc_deps/vendor/futures-util-preview/src/task/spawn/spawn_with_handle.rs
index 1dd63f9..99a4df7 100644
--- a/rustc_deps/vendor/futures-util-preview/src/task/spawn/spawn_with_handle.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/task/spawn/spawn_with_handle.rs
@@ -5,7 +5,7 @@
 use futures_core::task::{self, Poll, Spawn, SpawnObjError};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 use std::panic::{self, AssertUnwindSafe};
 use std::sync::Arc;
 use std::sync::atomic::{AtomicBool, Ordering};
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_future/and_then.rs b/rustc_deps/vendor/futures-util-preview/src/try_future/and_then.rs
index e9c380d..4966679 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_future/and_then.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_future/and_then.rs
@@ -1,5 +1,5 @@
 use super::{TryChain, TryChainAction};
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::{Future, TryFuture};
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_future/err_into.rs b/rustc_deps/vendor/futures-util-preview/src/try_future/err_into.rs
index 26f5e73..7dcdd2c 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_future/err_into.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_future/err_into.rs
@@ -1,5 +1,5 @@
 use core::marker::{PhantomData, Unpin};
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::{Future, TryFuture};
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_future/flatten_sink.rs b/rustc_deps/vendor/futures-util-preview/src/try_future/flatten_sink.rs
index 1f8b8be..2f44884 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_future/flatten_sink.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_future/flatten_sink.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::TryFuture;
 use futures_core::task::{self, Poll};
 use futures_sink::Sink;
@@ -28,7 +28,7 @@
         FlattenSink(Waiting(future))
     }
 
-    #[allow(needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
+    #[allow(clippy::needless_lifetimes)] // https://github.com/rust-lang/rust/issues/52675
     fn project_pin<'a>(
         self: PinMut<'a, Self>
     ) -> State<PinMut<'a, Fut>, PinMut<'a, Si>> {
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_future/into_future.rs b/rustc_deps/vendor/futures-util-preview/src/try_future/into_future.rs
index 1bf56e4..313e84e 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_future/into_future.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_future/into_future.rs
@@ -1,4 +1,4 @@
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::{Future, TryFuture};
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_future/map_err.rs b/rustc_deps/vendor/futures-util-preview/src/try_future/map_err.rs
index 2c47ff1..c1bc17d 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_future/map_err.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_future/map_err.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::{Future, TryFuture};
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_future/map_ok.rs b/rustc_deps/vendor/futures-util-preview/src/try_future/map_ok.rs
index b23d112..20e6122 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_future/map_ok.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_future/map_ok.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::{Future, TryFuture};
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_future/mod.rs b/rustc_deps/vendor/futures-util-preview/src/try_future/mod.rs
index 2bb27a1..d536c55 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_future/mod.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_future/mod.rs
@@ -6,14 +6,9 @@
 use futures_core::future::TryFuture;
 use futures_sink::Sink;
 
-#[cfg(feature = "compat")]
-use crate::compat::Compat;
-
-#[cfg(feature = "compat")]
-use futures_core::task::Spawn;
-
-#[cfg(feature = "compat")]
-use core::marker::Unpin;
+#[cfg(feature = "compat")] use crate::compat::Compat;
+#[cfg(feature = "compat")] use core::marker::Unpin;
+#[cfg(feature = "compat")] use futures_core::task::Spawn;
 
 /* TODO
 mod join;
@@ -61,7 +56,7 @@
 
 // Implementation details
 mod try_chain;
-crate use self::try_chain::{TryChain, TryChainAction};
+pub(crate) use self::try_chain::{TryChain, TryChainAction};
 
 impl<Fut: TryFuture> TryFutureExt for Fut {}
 
@@ -482,7 +477,6 @@
 
     /// Wraps a [`TryFuture`] into a future compatable with libraries using
     /// futures 0.1 future definitons. Requires the `compat` feature to enable.
-    ///
     #[cfg(feature = "compat")]
     fn compat<Sp>(self, spawn: Sp) -> Compat<Self, Sp>
         where Self: Sized + Unpin,
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_future/or_else.rs b/rustc_deps/vendor/futures-util-preview/src/try_future/or_else.rs
index 35e4713..6c7e4b6 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_future/or_else.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_future/or_else.rs
@@ -1,5 +1,5 @@
 use super::{TryChain, TryChainAction};
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::{Future, TryFuture};
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_future/try_chain.rs b/rustc_deps/vendor/futures-util-preview/src/try_future/try_chain.rs
index 56dfa9d..88b1ded 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_future/try_chain.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_future/try_chain.rs
@@ -1,16 +1,16 @@
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::TryFuture;
 use futures_core::task::{self, Poll};
 
 #[must_use = "futures do nothing unless polled"]
 #[derive(Debug)]
-crate enum TryChain<Fut1, Fut2, Data> {
+pub(crate) enum TryChain<Fut1, Fut2, Data> {
     First(Fut1, Option<Data>),
     Second(Fut2),
     Empty,
 }
 
-crate enum TryChainAction<Fut2>
+pub(crate) enum TryChainAction<Fut2>
     where Fut2: TryFuture,
 {
     Future(Fut2),
@@ -21,11 +21,11 @@
     where Fut1: TryFuture,
           Fut2: TryFuture,
 {
-    crate fn new(fut1: Fut1, data: Data) -> TryChain<Fut1, Fut2, Data> {
+    pub(crate) fn new(fut1: Fut1, data: Data) -> TryChain<Fut1, Fut2, Data> {
         TryChain::First(fut1, Some(data))
     }
 
-    crate fn poll<F>(
+    pub(crate) fn poll<F>(
         self: PinMut<Self>,
         cx: &mut task::Context,
         f: F,
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_future/try_join.rs b/rustc_deps/vendor/futures-util-preview/src/try_future/try_join.rs
index 23f09b9..88ea2b9 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_future/try_join.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_future/try_join.rs
@@ -3,7 +3,7 @@
 use crate::future::{MaybeDone, maybe_done};
 use crate::try_future::{TryFutureExt, IntoFuture};
 use core::fmt;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::{Future, TryFuture};
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
@@ -68,7 +68,7 @@
         {
             type Output = Result<(Fut1::Ok, $($Fut::Ok),*), Fut1::Error>;
 
-            #[allow(useless_let_if_seq)]
+            #[allow(clippy::useless_let_if_seq)]
             fn poll(
                 mut self: PinMut<Self>, cx: &mut task::Context
             ) -> Poll<Self::Output> {
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_future/unwrap_or_else.rs b/rustc_deps/vendor/futures-util-preview/src/try_future/unwrap_or_else.rs
index a229acc..ed8dde9 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_future/unwrap_or_else.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_future/unwrap_or_else.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::{Future, TryFuture};
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/err_into.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/err_into.rs
index 3c1fe28..0f338fc 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/err_into.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/err_into.rs
@@ -1,5 +1,5 @@
 use core::marker::{PhantomData, Unpin};
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::{Stream, TryStream};
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/into_stream.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/into_stream.rs
index 428d52d..57e3d0b 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/into_stream.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/into_stream.rs
@@ -1,4 +1,4 @@
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::{Stream, TryStream};
 use futures_core::task::{self, Poll};
 use pin_utils::unsafe_pinned;
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/map_err.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/map_err.rs
index 57f6ccb..f6f735d 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/map_err.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/map_err.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::{Stream, TryStream};
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
@@ -31,7 +31,7 @@
 {
     type Item = Result<St::Ok, E>;
 
-    #[allow(redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
+    #[allow(clippy::redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
     fn poll_next(
         mut self: PinMut<Self>,
         cx: &mut task::Context,
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/map_ok.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/map_ok.rs
index 9236fdb..cf8043b 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/map_ok.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/map_ok.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::stream::{Stream, TryStream};
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
@@ -31,7 +31,7 @@
 {
     type Item = Result<T, St::Error>;
 
-    #[allow(redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
+    #[allow(clippy::redundant_closure)] // https://github.com/rust-lang-nursery/rust-clippy/issues/1439
     fn poll_next(
         mut self: PinMut<Self>,
         cx: &mut task::Context,
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/mod.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/mod.rs
index cf81da7..596037a 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/mod.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/mod.rs
@@ -506,6 +506,29 @@
 
     /// Wraps a [`TryStream`] into a stream compatible with libraries using
     /// futures 0.1 `Stream`. Requires the `compat` feature to be enabled.
+    /// ```
+    /// #![feature(async_await, await_macro, futures_api)]
+    /// use futures::future::{FutureExt, TryFutureExt};
+    /// use futures::spawn;
+    /// use futures::compat::TokioDefaultSpawner;
+    /// # let (tx, rx) = futures::channel::oneshot::channel();
+    ///
+    /// let future03 = async {
+    ///     println!("Running on the pool");
+    ///     spawn!(async {
+    ///         println!("Spawned!");
+    ///         # tx.send(42).unwrap();
+    ///     }).unwrap();
+    /// };
+    ///
+    /// let future01 = future03
+    ///     .unit_error() // Make it a TryFuture
+    ///     .boxed()  // Make it Unpin
+    ///     .compat(TokioDefaultSpawner);
+    ///
+    /// tokio::run(future01);
+    /// # futures::executor::block_on(rx).unwrap();
+    /// ```
     #[cfg(feature = "compat")]
     fn compat<Sp>(self, spawn: Sp) -> Compat<Self, Sp>
         where Self: Sized + Unpin,
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_buffer_unordered.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_buffer_unordered.rs
index c603242..4128e7c 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_buffer_unordered.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_buffer_unordered.rs
@@ -6,7 +6,7 @@
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
 use std::marker::Unpin;
-use std::mem::PinMut;
+use std::pin::PinMut;
 
 /// A stream returned by the
 /// [`try_buffer_unordered`](super::TryStreamExt::try_buffer_unordered) method
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_collect.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_collect.rs
index 16aa403..eb7cdf5 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_collect.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_collect.rs
@@ -3,7 +3,8 @@
 use futures_core::task::{self, Poll};
 use pin_utils::{unsafe_pinned, unsafe_unpinned};
 use std::marker::Unpin;
-use std::mem::{self, PinMut};
+use std::mem;
+use std::pin::PinMut;
 use std::prelude::v1::*;
 
 /// A future which attempts to collect all of the values of a stream.
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_filter_map.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_filter_map.rs
index 4532e87..534a09e 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_filter_map.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_filter_map.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::{TryFuture};
 use futures_core::stream::{Stream, TryStream};
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_fold.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_fold.rs
index b3ac394..6da4a45 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_fold.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_fold.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::{Future, TryFuture};
 use futures_core::stream::TryStream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_for_each.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_for_each.rs
index c3409ee..63f54a1 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_for_each.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_for_each.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::{Future, TryFuture};
 use futures_core::stream::TryStream;
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_for_each_concurrent.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_for_each_concurrent.rs
index a59f0c9..229c4c9 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_for_each_concurrent.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_for_each_concurrent.rs
@@ -1,6 +1,6 @@
 use crate::stream::{FuturesUnordered, StreamExt};
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use core::num::NonZeroUsize;
 use futures_core::future::Future;
 use futures_core::stream::TryStream;
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_next.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_next.rs
index e741b9b..0a1c978 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_next.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_next.rs
@@ -2,7 +2,7 @@
 use futures_core::stream::TryStream;
 use futures_core::task::{self, Poll};
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 
 /// A future which attempts to collect all of the values of a stream.
 ///
diff --git a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_skip_while.rs b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_skip_while.rs
index d1dfbb8..3078089 100644
--- a/rustc_deps/vendor/futures-util-preview/src/try_stream/try_skip_while.rs
+++ b/rustc_deps/vendor/futures-util-preview/src/try_stream/try_skip_while.rs
@@ -1,5 +1,5 @@
 use core::marker::Unpin;
-use core::mem::PinMut;
+use core::pin::PinMut;
 use futures_core::future::TryFuture;
 use futures_core::stream::{Stream, TryStream};
 use futures_core::task::{self, Poll};
diff --git a/rustc_deps/vendor/pin-utils/.cargo-checksum.json b/rustc_deps/vendor/pin-utils/.cargo-checksum.json
index 16b0037..5ad086b 100644
--- a/rustc_deps/vendor/pin-utils/.cargo-checksum.json
+++ b/rustc_deps/vendor/pin-utils/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{".rustfmt.toml":"437631cb27041f27fb292831a1b41c3b076ae4e387ee7b26c18a5045f70789f9",".travis.yml":"2b33a430e84d9d861b3f4007c4184be47555861c895c181f4188b691a36d799e","Cargo.lock":"70273fd4360cc0bb4d4ebc07aae86c3045ed381ca1f823af646d8ec1fe3017d2","Cargo.toml":"747c72eae0142622b583892d1c85a397dbc7f5ee2379ced13ca3f53106668938","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"28802412d2bfbafe432b305634413b41a984d30fba0df41d30aa2c8a2077c5b1","README.md":"ebb23d6af3a613a0a5d053f77756611725175b05b41e9d03aaeeb3a9a30ac727","src/lib.rs":"6b368b3376fd23a7a5a33f6286d46551e6927c1dd31817944da142c38e4ca945","src/projection.rs":"00eb16d73c690cf582bee7a5e7832dc4f65ddd55552cb17422e9e754749dd3cc","src/stack_pin.rs":"a47d6b75d65593e797bc7c74b591c742663a508ec710fc9c5de441048864927a","tests/projection.rs":"1ef8a3284c6e3c9fe86d3ac95f44bbb3cc9333a42b3805eed6ccdc8a418a8035","tests/stack_pin.rs":"cdbd993c04dc4871f3d6ac920c3cab0b5f7292ca59b76ec1743fb359d368bb27"},"package":"00732c0034856e25a209071dff2e5a3424cf8612808cda550cd4fda6668fbead"}
\ No newline at end of file
+{"files":{".cargo_vcs_info.json":"a51b603a1423e2c0b817a2922e6c46b85960af088ace38b63508122b7d3d8ada",".rustfmt.toml":"437631cb27041f27fb292831a1b41c3b076ae4e387ee7b26c18a5045f70789f9",".travis.yml":"11c2f22f04ed6e16ef4a0b9d09d6041b84184e624343e464f86e7a523743711e","Cargo.toml":"cf87dd014813c244beb0cc935f5f7d7fe0abd80480c0efb7837ae70bd6cb1628","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"28802412d2bfbafe432b305634413b41a984d30fba0df41d30aa2c8a2077c5b1","README.md":"9e768fe67a05624fd9cc1020f76c54de8d96b87c9a2abb8dcdbc15b9e09aa398","src/lib.rs":"dda86ab58c545e64ed61b242ea99ea24f9e8a6af5679cc5017545323845f8951","src/projection.rs":"1e9c35e056d512a9744a1db538bb086da523d4c4739bacbdd6f770c305cff091","src/stack_pin.rs":"181e184fc030813e257a40680db4ed8c75f2647cfe1778df753002f75c625795","tests/projection.rs":"7ae72207eac7fe4e41b250bc315131829079e3a09e74f556c2cf8f9ad9e82a09","tests/stack_pin.rs":"6d27eff8c4556f5cba44c8c23cc0edda7faebf82d3a595d23dae1ac583cc8f2b"},"package":"4b99a48ed09e1394cb51732b8bfe61c8a97482b436499cb63655833d56580dae"}
\ No newline at end of file
diff --git a/rustc_deps/vendor/pin-utils/.cargo_vcs_info.json b/rustc_deps/vendor/pin-utils/.cargo_vcs_info.json
new file mode 100644
index 0000000..fe0fa7a
--- /dev/null
+++ b/rustc_deps/vendor/pin-utils/.cargo_vcs_info.json
@@ -0,0 +1,5 @@
+{
+  "git": {
+    "sha1": "893506ad113759e023b9936ae32244b0205635db"
+  }
+}
diff --git a/rustc_deps/vendor/pin-utils/.travis.yml b/rustc_deps/vendor/pin-utils/.travis.yml
index b2893fa..f46b24d 100644
--- a/rustc_deps/vendor/pin-utils/.travis.yml
+++ b/rustc_deps/vendor/pin-utils/.travis.yml
@@ -14,10 +14,13 @@
 
     - name: cargo clippy
       rust: nightly
-      install:
-        - rustup component add clippy-preview
       script:
-        - cargo clippy -- -Dwarnings
+        - if rustup component add clippy-preview;
+          then
+            cargo clippy -- -Dwarnings;
+          else
+            echo 'Skipping clippy';
+          fi
 
     - name: cargo doc
       rust: nightly
diff --git a/rustc_deps/vendor/pin-utils/Cargo.lock b/rustc_deps/vendor/pin-utils/Cargo.lock
deleted file mode 100644
index 73fb4f8..0000000
--- a/rustc_deps/vendor/pin-utils/Cargo.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-[[package]]
-name = "pin-utils"
-version = "0.1.0-alpha.1"
-
diff --git a/rustc_deps/vendor/pin-utils/Cargo.toml b/rustc_deps/vendor/pin-utils/Cargo.toml
index 205f27f..b481e4c 100644
--- a/rustc_deps/vendor/pin-utils/Cargo.toml
+++ b/rustc_deps/vendor/pin-utils/Cargo.toml
@@ -13,11 +13,12 @@
 cargo-features = ["edition"]
 
 [package]
+edition = "2018"
 name = "pin-utils"
-version = "0.1.0-alpha.1"
+version = "0.1.0-alpha.2"
 authors = ["Josef Brandl <mail@josefbrandl.de>"]
 description = "Utilities for pinning\n"
 documentation = "https://docs.rs/pin-utils"
+readme = "README.md"
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/rust-lang-nursery/pin-utils"
-edition = "2018"
diff --git a/rustc_deps/vendor/pin-utils/README.md b/rustc_deps/vendor/pin-utils/README.md
index 16d4197..adae1db 100644
--- a/rustc_deps/vendor/pin-utils/README.md
+++ b/rustc_deps/vendor/pin-utils/README.md
@@ -3,7 +3,7 @@
 Utilities for pinning
 
 [![Build Status](https://travis-ci.org/rust-lang-nursery/pin-utils.svg?branch=master)](https://travis-ci.org/rust-lang-nursery/pin-utils)
-[![Crates.io](https://img.shields.io/crates/v/pin-utils.svg?maxAge=2592000)](https://crates.io/crates/pin-utils)
+[![Crates.io](https://img.shields.io/crates/v/pin-utils.svg)](https://crates.io/crates/pin-utils)
 
 [Documentation](https://docs.rs/pin-utils)
 
@@ -13,13 +13,13 @@
 
 ```toml
 [dependencies]
-pin-utils = "0.1.0-alpha.1"
+pin-utils = "0.1.0-alpha.2"
 ```
 
-Next, add this to your crate:
+Now, you can use it:
 
 ```rust
-#[macro_use] extern crate pin_utils;
+use pin_utils::pin_mut; // And more...
 ```
 
 # License
diff --git a/rustc_deps/vendor/pin-utils/src/lib.rs b/rustc_deps/vendor/pin-utils/src/lib.rs
index d615858..10682ee 100644
--- a/rustc_deps/vendor/pin-utils/src/lib.rs
+++ b/rustc_deps/vendor/pin-utils/src/lib.rs
@@ -7,7 +7,7 @@
 #![deny(bare_trait_objects)]
 #![allow(unknown_lints)]
 
-#![doc(html_root_url = "https://docs.rs/pin-utils/0.1.0-alpha.1")]
+#![doc(html_root_url = "https://docs.rs/pin-utils/0.1.0-alpha.2")]
 
 #[doc(hidden)]
 pub mod core_reexport {
diff --git a/rustc_deps/vendor/pin-utils/src/projection.rs b/rustc_deps/vendor/pin-utils/src/projection.rs
index dfa76cb..0dbf7a4 100644
--- a/rustc_deps/vendor/pin-utils/src/projection.rs
+++ b/rustc_deps/vendor/pin-utils/src/projection.rs
@@ -8,8 +8,8 @@
 ///
 /// ```
 /// # #![feature(pin, arbitrary_self_types)]
-/// # #[macro_use] extern crate pin_utils;
-/// # use std::mem::PinMut;
+/// # use pin_utils::unsafe_pinned;
+/// # use std::pin::PinMut;
 /// # use std::marker::Unpin;
 /// struct Foo<T> {
 ///     field: T,
@@ -26,16 +26,16 @@
 /// impl<T: Unpin> Unpin for Foo<T> {} // Conditional Unpin impl
 /// ```
 ///
-/// [`Unpin`]: std::marker::Unpin
+/// [`Unpin`]: core::marker::Unpin
 /// [`drop`]: Drop::drop
 #[macro_export]
 macro_rules! unsafe_pinned {
     ($f:tt: $t:ty) => (
         fn $f<'__a>(
-            self: &'__a mut $crate::core_reexport::mem::PinMut<Self>
-        ) -> $crate::core_reexport::mem::PinMut<'__a, $t> {
+            self: &'__a mut $crate::core_reexport::pin::PinMut<Self>
+        ) -> $crate::core_reexport::pin::PinMut<'__a, $t> {
             unsafe {
-                $crate::core_reexport::mem::PinMut::map_unchecked(
+                $crate::core_reexport::pin::PinMut::map_unchecked(
                     self.reborrow(), |x| &mut x.$f
                 )
             }
@@ -52,8 +52,8 @@
 ///
 /// ```
 /// # #![feature(pin, arbitrary_self_types)]
-/// # #[macro_use] extern crate pin_utils;
-/// # use std::mem::PinMut;
+/// # use pin_utils::unsafe_unpinned;
+/// # use std::pin::PinMut;
 /// # struct Bar;
 /// struct Foo {
 ///     field: Bar,
@@ -71,10 +71,10 @@
 macro_rules! unsafe_unpinned {
     ($f:tt: $t:ty) => (
         fn $f<'__a>(
-            self: &'__a mut $crate::core_reexport::mem::PinMut<Self>
+            self: &'__a mut $crate::core_reexport::pin::PinMut<Self>
         ) -> &'__a mut $t {
             unsafe {
-                &mut $crate::core_reexport::mem::PinMut::get_mut_unchecked(
+                &mut $crate::core_reexport::pin::PinMut::get_mut_unchecked(
                     self.reborrow()
                 ).$f
             }
diff --git a/rustc_deps/vendor/pin-utils/src/stack_pin.rs b/rustc_deps/vendor/pin-utils/src/stack_pin.rs
index 7957caf..500b351 100644
--- a/rustc_deps/vendor/pin-utils/src/stack_pin.rs
+++ b/rustc_deps/vendor/pin-utils/src/stack_pin.rs
@@ -2,8 +2,8 @@
 ///
 /// ```
 /// # #![feature(pin)]
-/// # #[macro_use] extern crate pin_utils;
-/// # use core::mem::PinMut;
+/// # use pin_utils::pin_mut;
+/// # use core::pin::PinMut;
 /// # struct Foo {}
 /// let foo = Foo { /* ... */ };
 /// pin_mut!(foo);
@@ -18,7 +18,7 @@
         // ever again.
         #[allow(unused_mut)]
         let mut $x = unsafe {
-            $crate::core_reexport::mem::PinMut::new_unchecked(&mut $x)
+            $crate::core_reexport::pin::PinMut::new_unchecked(&mut $x)
         };
     )* }
 }
diff --git a/rustc_deps/vendor/pin-utils/tests/projection.rs b/rustc_deps/vendor/pin-utils/tests/projection.rs
index b3b3652..e9a8d6b 100644
--- a/rustc_deps/vendor/pin-utils/tests/projection.rs
+++ b/rustc_deps/vendor/pin-utils/tests/projection.rs
@@ -1,6 +1,6 @@
 #![feature(pin, arbitrary_self_types)]
-#[macro_use] extern crate pin_utils;
-use std::mem::PinMut;
+use pin_utils::{unsafe_pinned, unsafe_unpinned, pin_mut};
+use std::pin::PinMut;
 use std::marker::Unpin;
 
 struct Foo<T1, T2> {
diff --git a/rustc_deps/vendor/pin-utils/tests/stack_pin.rs b/rustc_deps/vendor/pin-utils/tests/stack_pin.rs
index c66b16e..b642951 100644
--- a/rustc_deps/vendor/pin-utils/tests/stack_pin.rs
+++ b/rustc_deps/vendor/pin-utils/tests/stack_pin.rs
@@ -1,6 +1,6 @@
 #![feature(pin)]
-#[macro_use] extern crate pin_utils;
-use core::mem::PinMut;
+use pin_utils::pin_mut;
+use core::pin::PinMut;
 
 #[test]
 fn stack_pin() {