Upgrade rust/crates/async-stream to 0.3.2 am: b10496ee09 am: 5a5722259b

Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/async-stream/+/1742514

Change-Id: I6f1a123daead6d9db68c488085cce2edf8a9dfff
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index 4a76e44..620b2af 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,5 +1,5 @@
 {
   "git": {
-    "sha1": "8c22349b9367b981ad08db573d8d906069e66d8c"
+    "sha1": "b28da881695e3c66e1782f0c2c330d4e162eb7c2"
   }
 }
diff --git a/Android.bp b/Android.bp
index 4d02932..24f721e 100644
--- a/Android.bp
+++ b/Android.bp
@@ -31,9 +31,9 @@
 }
 
 // dependent_library ["feature_list"]
-//   async-stream-impl-0.3.1
+//   async-stream-impl-0.3.2
 //   futures-core-0.3.15 "alloc,default,std"
-//   proc-macro2-1.0.26 "default,proc-macro"
+//   proc-macro2-1.0.27 "default,proc-macro"
 //   quote-1.0.9 "default,proc-macro"
-//   syn-1.0.72 "clone-impls,default,derive,extra-traits,full,parsing,printing,proc-macro,quote,visit-mut"
+//   syn-1.0.73 "clone-impls,default,derive,extra-traits,full,parsing,printing,proc-macro,quote,visit-mut"
 //   unicode-xid-0.2.2 "default"
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..bd7f60f
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,14 @@
+# 0.3.2
+
+* Expand `yield` in internal macro calls (#57)
+
+# 0.3.1
+
+* Support reexporting (#46)
+* Allow yielding `!Unpin` values (#50)
+* Implement `Stream::size_hint` method on `AsyncStream` (#40)
+* Documentation improvements
+
+# 0.3.0
+
+* Remove proc-macro-hack (#30)
diff --git a/Cargo.lock b/Cargo.lock
index 9ffcdbf..1cdf89d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -14,7 +14,7 @@
 
 [[package]]
 name = "async-stream"
-version = "0.3.1"
+version = "0.3.2"
 dependencies = [
  "async-stream-impl",
  "futures-core",
@@ -26,9 +26,9 @@
 
 [[package]]
 name = "async-stream-impl"
-version = "0.3.1"
+version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db134ba52475c060f3329a8ef0f8786d6b872ed01515d4b79c162e5798da1340"
+checksum = "648ed8c8d2ce5409ccd57453d9d1b214b342a0d69376a6feda1fd6cae3299308"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -61,16 +61,17 @@
 
 [[package]]
 name = "futures-core"
-version = "0.3.14"
+version = "0.3.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815"
+checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1"
 
 [[package]]
 name = "futures-macro"
-version = "0.3.14"
+version = "0.3.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "668c6733a182cd7deb4f1de7ba3bf2120823835b3bcfbeacf7d2c4a773c1bb8b"
+checksum = "a4c40298486cdf52cc00cd6d6987892ba502c7656a16a4192a9992b1ccedd121"
 dependencies = [
+ "autocfg",
  "proc-macro-hack",
  "proc-macro2",
  "quote",
@@ -79,16 +80,17 @@
 
 [[package]]
 name = "futures-task"
-version = "0.3.14"
+version = "0.3.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc"
+checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae"
 
 [[package]]
 name = "futures-util"
-version = "0.3.14"
+version = "0.3.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025"
+checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967"
 dependencies = [
+ "autocfg",
  "futures-core",
  "futures-macro",
  "futures-task",
@@ -137,15 +139,15 @@
 
 [[package]]
 name = "libc"
-version = "0.2.93"
+version = "0.2.94"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41"
+checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e"
 
 [[package]]
 name = "lock_api"
-version = "0.4.3"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a3c91c24eae6777794bb1997ad98bbb87daf92890acab859f7eaa4320333176"
+checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb"
 dependencies = [
  "scopeguard",
 ]
@@ -161,9 +163,9 @@
 
 [[package]]
 name = "memchr"
-version = "2.3.4"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
+checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
 
 [[package]]
 name = "mio"
@@ -263,9 +265,9 @@
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.26"
+version = "1.0.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec"
+checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038"
 dependencies = [
  "unicode-xid",
 ]
@@ -281,9 +283,9 @@
 
 [[package]]
 name = "redox_syscall"
-version = "0.2.6"
+version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8270314b5ccceb518e7e578952f0b72b88222d02e8f77f5ecf7abbb673539041"
+checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc"
 dependencies = [
  "bitflags",
 ]
@@ -302,18 +304,18 @@
 
 [[package]]
 name = "serde"
-version = "1.0.125"
+version = "1.0.126"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171"
+checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.125"
+version = "1.0.126"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d"
+checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -354,9 +356,9 @@
 
 [[package]]
 name = "syn"
-version = "1.0.69"
+version = "1.0.72"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48fe99c6bd8b1cc636890bcc071842de909d902c81ac7dab53ba33c421ab8ffb"
+checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -374,9 +376,9 @@
 
 [[package]]
 name = "tokio"
-version = "1.5.0"
+version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83f0c8e7c0addab50b663055baf787d0af7f413a46e6e7fb9559a4e4db7137a5"
+checksum = "bd3076b5c8cc18138b8f8814895c11eb4de37114a5d127bafdc5e55798ceef37"
 dependencies = [
  "autocfg",
  "bytes",
@@ -394,9 +396,9 @@
 
 [[package]]
 name = "tokio-macros"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "caf7b11a536f46a809a8a9f0bb4237020f70ecbf115b842360afb127ea2fda57"
+checksum = "c49e3df43841dafb86046472506755d8501c5615673955f6aa17181125d13c37"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -405,9 +407,9 @@
 
 [[package]]
 name = "tokio-stream"
-version = "0.1.5"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e177a5d8c3bf36de9ebe6d58537d8879e964332f93fb3339e43f618c81361af0"
+checksum = "f8864d706fdb3cc0843a49647ac892720dac98a6eeb818b77190592cf4994066"
 dependencies = [
  "futures-core",
  "pin-project-lite",
@@ -416,9 +418,9 @@
 
 [[package]]
 name = "tokio-test"
-version = "0.4.1"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f58403903e94d4bc56805e46597fced893410b2e753e229d3f7f22423ea03f67"
+checksum = "53474327ae5e166530d17f2d956afcb4f8a004de581b3cae10f12006bc8163e3"
 dependencies = [
  "async-stream 0.3.0",
  "bytes",
@@ -452,9 +454,9 @@
 
 [[package]]
 name = "unicode-xid"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
+checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
 
 [[package]]
 name = "winapi"
diff --git a/Cargo.toml b/Cargo.toml
index 51173f2..a2d9ba7 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,16 +13,16 @@
 [package]
 edition = "2018"
 name = "async-stream"
-version = "0.3.1"
+version = "0.3.2"
 authors = ["Carl Lerche <me@carllerche.com>"]
 description = "Asynchronous streams using async & await notation"
 homepage = "https://github.com/tokio-rs/async-stream"
-documentation = "https://docs.rs/async-stream/0.3"
+documentation = "https://docs.rs/async-stream"
 readme = "README.md"
 license = "MIT"
 repository = "https://github.com/tokio-rs/async-stream"
 [dependencies.async-stream-impl]
-version = "=0.3.1"
+version = "=0.3.2"
 
 [dependencies.futures-core]
 version = "0.3"
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index c30cb3d..06ccf45 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -2,25 +2,21 @@
 name = "async-stream"
 # When releasing to crates.io:
 # - Update version number
-#   - lib.rs: html_root_url.
 #   - README.md
 # - Update CHANGELOG.md
-# - Update doc URL.
-#   - Cargo.toml
-#   - README.md
 # - Create git tag
-version = "0.3.1"
+version = "0.3.2"
 edition = "2018"
 license = "MIT"
 authors = ["Carl Lerche <me@carllerche.com>"]
 description = "Asynchronous streams using async & await notation"
-documentation = "https://docs.rs/async-stream/0.3"
+documentation = "https://docs.rs/async-stream"
 homepage = "https://github.com/tokio-rs/async-stream"
 repository = "https://github.com/tokio-rs/async-stream"
 readme = "README.md"
 
 [dependencies]
-async-stream-impl = { version = "=0.3.1", path = "../async-stream-impl" }
+async-stream-impl = { version = "=0.3.2", path = "../async-stream-impl" }
 futures-core = "0.3"
 
 [dev-dependencies]
diff --git a/METADATA b/METADATA
index 3a9c8ec..0ad5312 100644
--- a/METADATA
+++ b/METADATA
@@ -7,13 +7,13 @@
   }
   url {
     type: ARCHIVE
-    value: "https://static.crates.io/crates/async-stream/async-stream-0.3.1.crate"
+    value: "https://static.crates.io/crates/async-stream/async-stream-0.3.2.crate"
   }
-  version: "0.3.1"
+  version: "0.3.2"
   license_type: NOTICE
   last_upgrade_date {
     year: 2021
-    month: 5
-    day: 19
+    month: 6
+    day: 21
   }
 }
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 73ad094..a83b104 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -14,15 +14,33 @@
       "name": "tokio-test_device_test_tests_macros"
     },
     {
+      "name": "tokio_device_test_tests__require_full"
+    },
+    {
       "name": "tokio_device_test_tests_buffered"
     },
     {
+      "name": "tokio_device_test_tests_io_async_fd"
+    },
+    {
       "name": "tokio_device_test_tests_io_async_read"
     },
     {
+      "name": "tokio_device_test_tests_io_chain"
+    },
+    {
+      "name": "tokio_device_test_tests_io_copy"
+    },
+    {
       "name": "tokio_device_test_tests_io_copy_bidirectional"
     },
     {
+      "name": "tokio_device_test_tests_io_driver"
+    },
+    {
+      "name": "tokio_device_test_tests_io_driver_drop"
+    },
+    {
       "name": "tokio_device_test_tests_io_lines"
     },
     {
@@ -35,9 +53,24 @@
       "name": "tokio_device_test_tests_io_read_buf"
     },
     {
+      "name": "tokio_device_test_tests_io_read_exact"
+    },
+    {
+      "name": "tokio_device_test_tests_io_read_line"
+    },
+    {
       "name": "tokio_device_test_tests_io_read_to_end"
     },
     {
+      "name": "tokio_device_test_tests_io_read_to_string"
+    },
+    {
+      "name": "tokio_device_test_tests_io_read_until"
+    },
+    {
+      "name": "tokio_device_test_tests_io_split"
+    },
+    {
       "name": "tokio_device_test_tests_io_take"
     },
     {
@@ -56,12 +89,36 @@
       "name": "tokio_device_test_tests_macros_join"
     },
     {
+      "name": "tokio_device_test_tests_macros_pin"
+    },
+    {
+      "name": "tokio_device_test_tests_macros_select"
+    },
+    {
+      "name": "tokio_device_test_tests_macros_test"
+    },
+    {
+      "name": "tokio_device_test_tests_macros_try_join"
+    },
+    {
+      "name": "tokio_device_test_tests_net_bind_resource"
+    },
+    {
+      "name": "tokio_device_test_tests_net_lookup_host"
+    },
+    {
       "name": "tokio_device_test_tests_no_rt"
     },
     {
+      "name": "tokio_device_test_tests_process_kill_on_drop"
+    },
+    {
       "name": "tokio_device_test_tests_rt_basic"
     },
     {
+      "name": "tokio_device_test_tests_rt_common"
+    },
+    {
       "name": "tokio_device_test_tests_rt_threaded"
     },
     {
@@ -77,15 +134,36 @@
       "name": "tokio_device_test_tests_sync_mpsc"
     },
     {
+      "name": "tokio_device_test_tests_sync_mutex"
+    },
+    {
       "name": "tokio_device_test_tests_sync_mutex_owned"
     },
     {
+      "name": "tokio_device_test_tests_sync_notify"
+    },
+    {
+      "name": "tokio_device_test_tests_sync_oneshot"
+    },
+    {
       "name": "tokio_device_test_tests_sync_rwlock"
     },
     {
+      "name": "tokio_device_test_tests_sync_semaphore"
+    },
+    {
+      "name": "tokio_device_test_tests_sync_semaphore_owned"
+    },
+    {
       "name": "tokio_device_test_tests_sync_watch"
     },
     {
+      "name": "tokio_device_test_tests_task_abort"
+    },
+    {
+      "name": "tokio_device_test_tests_task_blocking"
+    },
+    {
       "name": "tokio_device_test_tests_task_local"
     },
     {
@@ -95,18 +173,39 @@
       "name": "tokio_device_test_tests_tcp_accept"
     },
     {
+      "name": "tokio_device_test_tests_tcp_connect"
+    },
+    {
       "name": "tokio_device_test_tests_tcp_echo"
     },
     {
+      "name": "tokio_device_test_tests_tcp_into_split"
+    },
+    {
       "name": "tokio_device_test_tests_tcp_into_std"
     },
     {
+      "name": "tokio_device_test_tests_tcp_peek"
+    },
+    {
       "name": "tokio_device_test_tests_tcp_shutdown"
     },
     {
+      "name": "tokio_device_test_tests_tcp_socket"
+    },
+    {
+      "name": "tokio_device_test_tests_tcp_split"
+    },
+    {
       "name": "tokio_device_test_tests_time_rt"
     },
     {
+      "name": "tokio_device_test_tests_udp"
+    },
+    {
+      "name": "tokio_device_test_tests_uds_cred"
+    },
+    {
       "name": "tokio_device_test_tests_uds_split"
     }
   ]
diff --git a/src/lib.rs b/src/lib.rs
index 432c049..d2c78f9 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,4 +1,3 @@
-#![doc(html_root_url = "https://docs.rs/async-stream/0.3.1")]
 #![warn(
     missing_debug_implementations,
     missing_docs,
diff --git a/tests/stream.rs b/tests/stream.rs
index bc9c742..77b3813 100644
--- a/tests/stream.rs
+++ b/tests/stream.rs
@@ -81,6 +81,42 @@
 }
 
 #[tokio::test]
+async fn unit_yield_in_select() {
+    use tokio::select;
+
+    async fn do_stuff_async() {}
+
+    let s = stream! {
+        select! {
+            _ = do_stuff_async() => yield,
+            else => yield,
+        }
+    };
+
+    let values: Vec<_> = s.collect().await;
+    assert_eq!(values.len(), 1);
+}
+
+#[tokio::test]
+async fn yield_with_select() {
+    use tokio::select;
+
+    async fn do_stuff_async() {}
+    async fn more_async_work() {}
+
+    let s = stream! {
+        select! {
+            _ = do_stuff_async() => yield "hey",
+            _ = more_async_work() => yield "hey",
+            else => yield "hey",
+        }
+    };
+
+    let values: Vec<_> = s.collect().await;
+    assert_eq!(values, vec!["hey"]);
+}
+
+#[tokio::test]
 async fn return_stream() {
     fn build_stream() -> impl Stream<Item = u32> {
         stream! {
@@ -173,6 +209,27 @@
 }
 
 #[test]
+fn inner_try_stream() {
+    use async_stream::try_stream;
+    use tokio::select;
+
+    async fn do_stuff_async() {}
+
+    let _ = stream! {
+        select! {
+            _ = do_stuff_async() => {
+                let another_s = try_stream! {
+                    yield;
+                };
+                let _: Result<(), ()> = Box::pin(another_s).next().await.unwrap();
+            },
+            else => {},
+        }
+        yield
+    };
+}
+
+#[test]
 fn test() {
     let t = trybuild::TestCases::new();
     t.compile_fail("tests/ui/*.rs");
diff --git a/tests/ui/yield_bad_expr_in_macro.rs b/tests/ui/yield_bad_expr_in_macro.rs
new file mode 100644
index 0000000..37fcd34
--- /dev/null
+++ b/tests/ui/yield_bad_expr_in_macro.rs
@@ -0,0 +1,11 @@
+use async_stream::stream;
+
+fn main() {
+    async fn work() {}
+
+    stream! {
+        tokio::select! {
+            _ = work() => yield fn f() {},
+        }
+    };
+}
diff --git a/tests/ui/yield_bad_expr_in_macro.stderr b/tests/ui/yield_bad_expr_in_macro.stderr
new file mode 100644
index 0000000..71d9075
--- /dev/null
+++ b/tests/ui/yield_bad_expr_in_macro.stderr
@@ -0,0 +1,5 @@
+error: expected expression
+ --> $DIR/yield_bad_expr_in_macro.rs:8:33
+  |
+8 |             _ = work() => yield fn f() {},
+  |                                 ^^
diff --git a/tests/ui/yield_in_async.stderr b/tests/ui/yield_in_async.stderr
index 98c3568..19691eb 100644
--- a/tests/ui/yield_in_async.stderr
+++ b/tests/ui/yield_in_async.stderr
@@ -12,7 +12,7 @@
 6 |             yield 123;
   |             ^^^^^^^^^
 
-error[E0271]: type mismatch resolving `<[static generator@$DIR/src/lib.rs:202:9: 202:67] as Generator<ResumeTy>>::Yield == ()`
+error[E0271]: type mismatch resolving `<[static generator@$DIR/src/lib.rs:201:9: 201:67] as Generator<ResumeTy>>::Yield == ()`
   --> $DIR/yield_in_async.rs:4:5
    |
 4  | /     stream! {
diff --git a/tests/ui/yield_in_closure.stderr b/tests/ui/yield_in_closure.stderr
index 6eb733d..2506e18 100644
--- a/tests/ui/yield_in_closure.stderr
+++ b/tests/ui/yield_in_closure.stderr
@@ -6,13 +6,13 @@
   |
   = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
 
-error[E0277]: expected a `FnOnce<(&str,)>` closure, found `[generator@$DIR/src/lib.rs:202:9: 202:67]`
+error[E0277]: expected a `FnOnce<(&str,)>` closure, found `[generator@$DIR/src/lib.rs:201:9: 201:67]`
  --> $DIR/yield_in_closure.rs:6:14
   |
 6 |             .and_then(|v| {
-  |              ^^^^^^^^ expected an `FnOnce<(&str,)>` closure, found `[generator@$DIR/src/lib.rs:202:9: 202:67]`
+  |              ^^^^^^^^ expected an `FnOnce<(&str,)>` closure, found `[generator@$DIR/src/lib.rs:201:9: 201:67]`
   |
-  = help: the trait `FnOnce<(&str,)>` is not implemented for `[generator@$DIR/src/lib.rs:202:9: 202:67]`
+  = help: the trait `FnOnce<(&str,)>` is not implemented for `[generator@$DIR/src/lib.rs:201:9: 201:67]`
 
 Some errors have detailed explanations: E0277, E0658.
 For more information about an error, try `rustc --explain E0277`.