diff options
-rw-r--r-- | tokio/src/macros/select.rs | 1 | ||||
-rw-r--r-- | tokio/tests/macros_select.rs | 17 |
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); +} |