summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tokio/src/macros/select.rs1
-rw-r--r--tokio/tests/macros_select.rs17
2 files changed, 18 insertions, 0 deletions
diff --git a/tokio/src/macros/select.rs b/tokio/src/macros/select.rs
index 6497a510..ffca0027 100644
--- a/tokio/src/macros/select.rs
+++ b/tokio/src/macros/select.rs
@@ -404,6 +404,7 @@ macro_rules! select {
// The future returned a value, check if matches
// the specified pattern.
#[allow(unused_variables)]
+ #[allow(unused_mut)]
match &out {
$bind => {}
_ => continue,
diff --git a/tokio/tests/macros_select.rs b/tokio/tests/macros_select.rs
index 2ebc4efc..a6c8f8f5 100644
--- a/tokio/tests/macros_select.rs
+++ b/tokio/tests/macros_select.rs
@@ -462,3 +462,20 @@ async fn async_never() -> ! {
tokio::time::delay_for(Duration::from_millis(10)).await;
}
}
+
+// From https://github.com/tokio-rs/tokio/issues/2857
+#[tokio::test]
+async fn mut_on_left_hand_side() {
+ let v = async move {
+ let ok = async { 1 };
+ tokio::pin!(ok);
+ tokio::select! {
+ mut a = &mut ok => {
+ a += 1;
+ a
+ }
+ }
+ }
+ .await;
+ assert_eq!(v, 2);
+}