diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a20945b66..e9fb2b35c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -127,7 +127,8 @@ jobs: # Check std feature - run: cargo hack build --workspace --ignore-private --no-default-features --features std --ignore-unknown-features # Check compat feature (futures, futures-util) - - run: cargo hack build -p futures -p futures-util --no-default-features --features std,io-compat + # Exclude io-compat feature because the MSRV when it is enabled depends on the MSRV of tokio 0.1. + - run: cargo hack build -p futures -p futures-util --no-default-features --features std,compat # Check thread-pool feature (futures, futures-executor) - run: cargo hack build -p futures -p futures-executor --no-default-features --features std,thread-pool @@ -151,7 +152,7 @@ jobs: - run: cargo build --tests --features default,thread-pool,io-compat --manifest-path futures/Cargo.toml minimal-versions: - name: cargo build -Z minimal-versions + name: cargo minimal-versions build runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -159,10 +160,9 @@ jobs: run: rustup update nightly && rustup default nightly - name: Install cargo-hack uses: taiki-e/install-action@cargo-hack - # remove dev-dependencies to avoid https://github.com/rust-lang/cargo/issues/4866 - - run: cargo hack --remove-dev-deps --workspace - - run: cargo update -Z minimal-versions - - run: cargo build --workspace --all-features + - name: Install cargo-minimal-versions + uses: taiki-e/install-action@cargo-minimal-versions + - run: cargo minimal-versions build --workspace --ignore-private --all-features no-std: name: cargo build --target ${{ matrix.target }} diff --git a/futures-channel/src/lib.rs b/futures-channel/src/lib.rs index 4cd936d55..4bc9370ae 100644 --- a/futures-channel/src/lib.rs +++ b/futures-channel/src/lib.rs @@ -26,6 +26,7 @@ allow(dead_code, unused_assignments, unused_variables) ) ))] +#![allow(clippy::arc_with_non_send_sync)] // false positive https://github.com/rust-lang/rust-clippy/issues/11076 #[cfg(not(futures_no_atomic_cas))] #[cfg(feature = "alloc")] diff --git a/futures-macro/Cargo.toml b/futures-macro/Cargo.toml index 54bd533c8..c5c85f1d2 100644 --- a/futures-macro/Cargo.toml +++ b/futures-macro/Cargo.toml @@ -16,6 +16,6 @@ proc-macro = true [features] [dependencies] -proc-macro2 = "1.0" +proc-macro2 = "1.0.60" quote = "1.0" syn = { version = "2.0.8", features = ["full"] } diff --git a/futures-util/src/lib.rs b/futures-util/src/lib.rs index e00faf477..dd8ab2cdc 100644 --- a/futures-util/src/lib.rs +++ b/futures-util/src/lib.rs @@ -19,6 +19,7 @@ ))] #![cfg_attr(docsrs, feature(doc_cfg))] #![allow(clippy::needless_borrow)] // https://github.com/rust-lang/futures-rs/pull/2558#issuecomment-1030745203 +#![allow(clippy::arc_with_non_send_sync)] // false positive https://github.com/rust-lang/rust-clippy/issues/11076 #[cfg(all(feature = "bilock", not(feature = "unstable")))] compile_error!("The `bilock` feature requires the `unstable` feature as an explicit opt-in to unstable features"); diff --git a/futures/tests/async_await_macros.rs b/futures/tests/async_await_macros.rs index 82a617f2c..e87a5bf05 100644 --- a/futures/tests/async_await_macros.rs +++ b/futures/tests/async_await_macros.rs @@ -321,8 +321,7 @@ fn stream_select() { assert_eq!(endless_ones.next().await, Some(1)); assert_eq!(endless_ones.next().await, Some(1)); - let mut finite_list = - stream_select!(stream::iter(vec![1].into_iter()), stream::iter(vec![1].into_iter())); + let mut finite_list = stream_select!(stream::iter(vec![1]), stream::iter(vec![1])); assert_eq!(finite_list.next().await, Some(1)); assert_eq!(finite_list.next().await, Some(1)); assert_eq!(finite_list.next().await, None); diff --git a/futures/tests/stream_select_all.rs b/futures/tests/stream_select_all.rs index fdeb7b997..12a993667 100644 --- a/futures/tests/stream_select_all.rs +++ b/futures/tests/stream_select_all.rs @@ -79,8 +79,7 @@ fn works_1() { #[test] fn clear() { - let mut tasks = - select_all(vec![stream::iter(vec![1].into_iter()), stream::iter(vec![2].into_iter())]); + let mut tasks = select_all(vec![stream::iter(vec![1]), stream::iter(vec![2])]); assert_eq!(block_on(tasks.next()), Some(1)); assert!(!tasks.is_empty()); @@ -88,7 +87,7 @@ fn clear() { tasks.clear(); assert!(tasks.is_empty()); - tasks.push(stream::iter(vec![3].into_iter())); + tasks.push(stream::iter(vec![3])); assert!(!tasks.is_empty()); tasks.clear();