diff --git a/third_party/rust/chromium_crates_io/Cargo.lock b/third_party/rust/chromium_crates_io/Cargo.lock index 92986470156d..10f8fc719338 100644 --- a/third_party/rust/chromium_crates_io/Cargo.lock +++ b/third_party/rust/chromium_crates_io/Cargo.lock @@ -886,7 +886,7 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures-channel", @@ -900,7 +900,7 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures-core", @@ -909,12 +909,12 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures-executor" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures-core", @@ -924,17 +924,17 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures-macro" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.91", ] [[package]] @@ -948,12 +948,12 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures-task" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -963,7 +963,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures-util" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures-channel", diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/.cargo_vcs_info.json deleted file mode 100644 index d3f0b11a9cec..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "cfc501c9c7ef53c531ed43533bb02845f65ff79e" - }, - "path_in_vcs": "futures" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/Cargo.toml deleted file mode 100644 index 0fabb2132dc9..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/Cargo.toml +++ /dev/null @@ -1,147 +0,0 @@ -# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO -# -# When uploading crates to the registry Cargo will automatically -# "normalize" Cargo.toml files for maximal compatibility -# with all versions of Cargo and also rewrite `path` dependencies -# to registry (e.g., crates.io) dependencies. -# -# If you are reading this file be aware that the original Cargo.toml -# will likely look very different (and much more reasonable). -# See Cargo.toml.orig for the original contents. - -[package] -edition = "2018" -rust-version = "1.45" -name = "futures" -version = "0.3.27" -description = """ -An implementation of futures and streams featuring zero allocations, -composability, and iterator-like interfaces. -""" -homepage = "https://rust-lang.github.io/futures-rs" -readme = "README.md" -keywords = [ - "futures", - "async", - "future", -] -categories = ["asynchronous"] -license = "MIT OR Apache-2.0" -repository = "https://github.com/rust-lang/futures-rs" - -[package.metadata.docs.rs] -all-features = true -rustdoc-args = [ - "--cfg", - "docsrs", -] - -[package.metadata.playground] -features = [ - "std", - "async-await", - "compat", - "io-compat", - "executor", - "thread-pool", -] - -[dependencies.futures-channel] -version = "0.3.27" -features = ["sink"] -default-features = false - -[dependencies.futures-core] -version = "0.3.27" -default-features = false - -[dependencies.futures-executor] -version = "0.3.27" -optional = true -default-features = false - -[dependencies.futures-io] -version = "0.3.27" -default-features = false - -[dependencies.futures-sink] -version = "0.3.27" -default-features = false - -[dependencies.futures-task] -version = "0.3.27" -default-features = false - -[dependencies.futures-util] -version = "0.3.27" -features = ["sink"] -default-features = false - -[dev-dependencies.assert_matches] -version = "1.3.0" - -[dev-dependencies.pin-project] -version = "1.0.11" - -[dev-dependencies.pin-utils] -version = "0.1.0" - -[dev-dependencies.static_assertions] -version = "1" - -[dev-dependencies.tokio] -version = "0.1.11" - -[features] -alloc = [ - "futures-core/alloc", - "futures-task/alloc", - "futures-sink/alloc", - "futures-channel/alloc", - "futures-util/alloc", -] -async-await = [ - "futures-util/async-await", - "futures-util/async-await-macro", -] -bilock = ["futures-util/bilock"] -cfg-target-has-atomic = [] -compat = [ - "std", - "futures-util/compat", -] -default = [ - "std", - "async-await", - "executor", -] -executor = [ - "std", - "futures-executor/std", -] -io-compat = [ - "compat", - "futures-util/io-compat", -] -std = [ - "alloc", - "futures-core/std", - "futures-task/std", - "futures-io/std", - "futures-sink/std", - "futures-util/std", - "futures-util/io", - "futures-util/channel", -] -thread-pool = [ - "executor", - "futures-executor/thread-pool", -] -unstable = [ - "futures-core/unstable", - "futures-task/unstable", - "futures-channel/unstable", - "futures-io/unstable", - "futures-util/unstable", -] -write-all-vectored = ["futures-util/write-all-vectored"] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/.cargo_vcs_info.json new file mode 100644 index 000000000000..f5bfc1da89d5 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "1e052816b09890925cfdfcbe8d390cdaae5e4c38" + }, + "path_in_vcs": "futures" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/Cargo.toml new file mode 100644 index 000000000000..b2ee7b0b6bb6 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/Cargo.toml @@ -0,0 +1,392 @@ +# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO +# +# When uploading crates to the registry Cargo will automatically +# "normalize" Cargo.toml files for maximal compatibility +# with all versions of Cargo and also rewrite `path` dependencies +# to registry (e.g., crates.io) dependencies. +# +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. + +[package] +edition = "2018" +rust-version = "1.56" +name = "futures" +version = "0.3.31" +build = false +autobins = false +autoexamples = false +autotests = false +autobenches = false +description = """ +An implementation of futures and streams featuring zero allocations, +composability, and iterator-like interfaces. +""" +homepage = "https://rust-lang.github.io/futures-rs" +readme = "README.md" +keywords = [ + "futures", + "async", + "future", +] +categories = ["asynchronous"] +license = "MIT OR Apache-2.0" +repository = "https://github.com/rust-lang/futures-rs" + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = [ + "--cfg", + "docsrs", +] + +[package.metadata.playground] +features = [ + "std", + "async-await", + "compat", + "io-compat", + "executor", + "thread-pool", +] + +[lib] +name = "futures" +path = "src/lib.rs" + +[[test]] +name = "_require_features" +path = "tests/_require_features.rs" + +[[test]] +name = "async_await_macros" +path = "tests/async_await_macros.rs" + +[[test]] +name = "auto_traits" +path = "tests/auto_traits.rs" + +[[test]] +name = "bilock" +path = "tests/bilock.rs" + +[[test]] +name = "compat" +path = "tests/compat.rs" + +[[test]] +name = "eager_drop" +path = "tests/eager_drop.rs" + +[[test]] +name = "eventual" +path = "tests/eventual.rs" + +[[test]] +name = "future_abortable" +path = "tests/future_abortable.rs" + +[[test]] +name = "future_basic_combinators" +path = "tests/future_basic_combinators.rs" + +[[test]] +name = "future_fuse" +path = "tests/future_fuse.rs" + +[[test]] +name = "future_inspect" +path = "tests/future_inspect.rs" + +[[test]] +name = "future_join" +path = "tests/future_join.rs" + +[[test]] +name = "future_join_all" +path = "tests/future_join_all.rs" + +[[test]] +name = "future_obj" +path = "tests/future_obj.rs" + +[[test]] +name = "future_select_all" +path = "tests/future_select_all.rs" + +[[test]] +name = "future_select_ok" +path = "tests/future_select_ok.rs" + +[[test]] +name = "future_shared" +path = "tests/future_shared.rs" + +[[test]] +name = "future_try_flatten_stream" +path = "tests/future_try_flatten_stream.rs" + +[[test]] +name = "future_try_join_all" +path = "tests/future_try_join_all.rs" + +[[test]] +name = "io_buf_reader" +path = "tests/io_buf_reader.rs" + +[[test]] +name = "io_buf_writer" +path = "tests/io_buf_writer.rs" + +[[test]] +name = "io_cursor" +path = "tests/io_cursor.rs" + +[[test]] +name = "io_line_writer" +path = "tests/io_line_writer.rs" + +[[test]] +name = "io_lines" +path = "tests/io_lines.rs" + +[[test]] +name = "io_read" +path = "tests/io_read.rs" + +[[test]] +name = "io_read_exact" +path = "tests/io_read_exact.rs" + +[[test]] +name = "io_read_line" +path = "tests/io_read_line.rs" + +[[test]] +name = "io_read_to_end" +path = "tests/io_read_to_end.rs" + +[[test]] +name = "io_read_to_string" +path = "tests/io_read_to_string.rs" + +[[test]] +name = "io_read_until" +path = "tests/io_read_until.rs" + +[[test]] +name = "io_window" +path = "tests/io_window.rs" + +[[test]] +name = "io_write" +path = "tests/io_write.rs" + +[[test]] +name = "lock_mutex" +path = "tests/lock_mutex.rs" + +[[test]] +name = "macro_comma_support" +path = "tests/macro_comma_support.rs" + +[[test]] +name = "object_safety" +path = "tests/object_safety.rs" + +[[test]] +name = "oneshot" +path = "tests/oneshot.rs" + +[[test]] +name = "ready_queue" +path = "tests/ready_queue.rs" + +[[test]] +name = "recurse" +path = "tests/recurse.rs" + +[[test]] +name = "sink" +path = "tests/sink.rs" + +[[test]] +name = "sink_fanout" +path = "tests/sink_fanout.rs" + +[[test]] +name = "stream" +path = "tests/stream.rs" + +[[test]] +name = "stream_abortable" +path = "tests/stream_abortable.rs" + +[[test]] +name = "stream_buffer_unordered" +path = "tests/stream_buffer_unordered.rs" + +[[test]] +name = "stream_catch_unwind" +path = "tests/stream_catch_unwind.rs" + +[[test]] +name = "stream_futures_ordered" +path = "tests/stream_futures_ordered.rs" + +[[test]] +name = "stream_futures_unordered" +path = "tests/stream_futures_unordered.rs" + +[[test]] +name = "stream_into_async_read" +path = "tests/stream_into_async_read.rs" + +[[test]] +name = "stream_peekable" +path = "tests/stream_peekable.rs" + +[[test]] +name = "stream_select_all" +path = "tests/stream_select_all.rs" + +[[test]] +name = "stream_select_next_some" +path = "tests/stream_select_next_some.rs" + +[[test]] +name = "stream_split" +path = "tests/stream_split.rs" + +[[test]] +name = "stream_try_stream" +path = "tests/stream_try_stream.rs" + +[[test]] +name = "stream_unfold" +path = "tests/stream_unfold.rs" + +[[test]] +name = "task_arc_wake" +path = "tests/task_arc_wake.rs" + +[[test]] +name = "task_atomic_waker" +path = "tests/task_atomic_waker.rs" + +[[test]] +name = "test_macro" +path = "tests/test_macro.rs" + +[[test]] +name = "try_join" +path = "tests/try_join.rs" + +[dependencies.futures-channel] +version = "0.3.31" +features = ["sink"] +default-features = false + +[dependencies.futures-core] +version = "0.3.31" +default-features = false + +[dependencies.futures-executor] +version = "0.3.31" +optional = true +default-features = false + +[dependencies.futures-io] +version = "0.3.31" +default-features = false + +[dependencies.futures-sink] +version = "0.3.31" +default-features = false + +[dependencies.futures-task] +version = "0.3.31" +default-features = false + +[dependencies.futures-util] +version = "0.3.31" +features = ["sink"] +default-features = false + +[dev-dependencies.assert_matches] +version = "1.3.0" + +[dev-dependencies.pin-project] +version = "1.0.11" + +[dev-dependencies.static_assertions] +version = "1" + +[dev-dependencies.tokio] +version = "0.1.11" + +[features] +alloc = [ + "futures-core/alloc", + "futures-task/alloc", + "futures-sink/alloc", + "futures-channel/alloc", + "futures-util/alloc", +] +async-await = [ + "futures-util/async-await", + "futures-util/async-await-macro", +] +bilock = ["futures-util/bilock"] +cfg-target-has-atomic = [] +compat = [ + "std", + "futures-util/compat", +] +default = [ + "std", + "async-await", + "executor", +] +executor = [ + "std", + "futures-executor/std", +] +io-compat = [ + "compat", + "futures-util/io-compat", +] +std = [ + "alloc", + "futures-core/std", + "futures-task/std", + "futures-io/std", + "futures-sink/std", + "futures-util/std", + "futures-util/io", + "futures-util/channel", +] +thread-pool = [ + "executor", + "futures-executor/thread-pool", +] +unstable = [ + "futures-core/unstable", + "futures-task/unstable", + "futures-channel/unstable", + "futures-io/unstable", + "futures-util/unstable", +] +write-all-vectored = ["futures-util/write-all-vectored"] + +[lints.rust] +missing_debug_implementations = "warn" +rust_2018_idioms = "warn" +single_use_lifetimes = "warn" +unreachable_pub = "warn" + +[lints.rust.unexpected_cfgs] +level = "warn" +priority = 0 +check-cfg = ["cfg(futures_sanitizer)"] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/Cargo.toml.orig similarity index 81% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/Cargo.toml.orig index f2832f27b3c4..102f9215ccff 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/Cargo.toml.orig @@ -1,8 +1,8 @@ [package] name = "futures" -version = "0.3.27" +version = "0.3.31" edition = "2018" -rust-version = "1.45" +rust-version = "1.56" license = "MIT OR Apache-2.0" readme = "../README.md" keywords = ["futures", "async", "future"] @@ -15,20 +15,19 @@ composability, and iterator-like interfaces. categories = ["asynchronous"] [dependencies] -futures-core = { path = "../futures-core", version = "0.3.27", default-features = false } -futures-task = { path = "../futures-task", version = "0.3.27", default-features = false } -futures-channel = { path = "../futures-channel", version = "0.3.27", default-features = false, features = ["sink"] } -futures-executor = { path = "../futures-executor", version = "0.3.27", default-features = false, optional = true } -futures-io = { path = "../futures-io", version = "0.3.27", default-features = false } -futures-sink = { path = "../futures-sink", version = "0.3.27", default-features = false } -futures-util = { path = "../futures-util", version = "0.3.27", default-features = false, features = ["sink"] } +futures-core = { path = "../futures-core", version = "0.3.31", default-features = false } +futures-task = { path = "../futures-task", version = "0.3.31", default-features = false } +futures-channel = { path = "../futures-channel", version = "0.3.31", default-features = false, features = ["sink"] } +futures-executor = { path = "../futures-executor", version = "0.3.31", default-features = false, optional = true } +futures-io = { path = "../futures-io", version = "0.3.31", default-features = false } +futures-sink = { path = "../futures-sink", version = "0.3.31", default-features = false } +futures-util = { path = "../futures-util", version = "0.3.31", default-features = false, features = ["sink"] } [dev-dependencies] futures-executor = { path = "../futures-executor", features = ["thread-pool"] } futures-test = { path = "../futures-test" } assert_matches = "1.3.0" pin-project = "1.0.11" -pin-utils = "0.1.0" static_assertions = "1" tokio = "0.1.11" @@ -59,3 +58,6 @@ rustdoc-args = ["--cfg", "docsrs"] [package.metadata.playground] features = ["std", "async-await", "compat", "io-compat", "executor", "thread-pool"] + +[lints] +workspace = true diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/LICENSE-APACHE diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/LICENSE-MIT diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/README.md b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/README.md similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/README.md rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/README.md index 45e1f5b32028..355d6078e350 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/README.md +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/README.md @@ -38,7 +38,7 @@ Add this to your `Cargo.toml`: futures = "0.3" ``` -The current `futures` requires Rust 1.45 or later. +The current `futures` requires Rust 1.56 or later. ### Feature `std` diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/src/lib.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/src/lib.rs index b972f5175486..654576fcda5c 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/src/lib.rs @@ -81,14 +81,7 @@ //! The majority of examples and code snippets in this crate assume that they are //! inside an async block as written above. -#![cfg_attr(not(feature = "std"), no_std)] -#![warn( - missing_debug_implementations, - missing_docs, - rust_2018_idioms, - single_use_lifetimes, - unreachable_pub -)] +#![no_std] #![doc(test( no_crate_inject, attr( @@ -96,6 +89,7 @@ allow(dead_code, unused_assignments, unused_variables) ) ))] +#![warn(missing_docs, unsafe_op_in_unsafe_fn)] #![cfg_attr(docsrs, feature(doc_cfg))] #[cfg(all(feature = "bilock", not(feature = "unstable")))] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/_require_features.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/_require_features.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/_require_features.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/_require_features.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/async_await_macros.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/async_await_macros.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/async_await_macros.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/async_await_macros.rs index 82a617f2c2f4..0bc79e4ae815 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/async_await_macros.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/async_await_macros.rs @@ -57,6 +57,18 @@ fn select() { assert!(ran); } +#[test] +fn select_grammar() { + // Parsing after `=>` using Expr::parse would parse `{}() = future::ready(())` + // as one expression. + block_on(async { + select! { + () = future::pending::<()>() => {} + () = future::ready(()) => {} + } + }); +} + #[test] fn select_biased() { let (tx1, rx1) = oneshot::channel::(); diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/auto_traits.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/auto_traits.rs similarity index 92% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/auto_traits.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/auto_traits.rs index 5fc0f7d67548..3385360591ad 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/auto_traits.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/auto_traits.rs @@ -1,4 +1,5 @@ #![cfg(feature = "compat")] +#![allow(dead_code)] //! Assert Send/Sync/Unpin for all public types. @@ -12,45 +13,49 @@ use static_assertions::{assert_impl_all as assert_impl, assert_not_impl_all as a use std::marker::PhantomPinned; use std::{marker::PhantomData, pin::Pin}; -pub type LocalFuture = Pin>>; -pub type LocalTryFuture = LocalFuture>; -pub type SendFuture = Pin + Send>>; -pub type SendTryFuture = SendFuture>; -pub type SyncFuture = Pin + Sync>>; -pub type SyncTryFuture = SyncFuture>; -pub type UnpinFuture = LocalFuture; -pub type UnpinTryFuture = UnpinFuture>; -pub struct PinnedFuture(PhantomPinned, PhantomData); +type LocalFuture = Pin>>; +type LocalTryFuture = LocalFuture>; +type SendFuture = Pin + Send>>; +type SendTryFuture = SendFuture>; +type SyncFuture = Pin + Sync>>; +type SyncTryFuture = SyncFuture>; +type SendSyncFuture = Pin + Send + Sync>>; +type SendSyncTryFuture = SendSyncFuture>; +type UnpinFuture = LocalFuture; +type UnpinTryFuture = UnpinFuture>; +struct PinnedFuture(PhantomPinned, PhantomData); impl Future for PinnedFuture { type Output = T; fn poll(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll { unimplemented!() } } -pub type PinnedTryFuture = PinnedFuture>; - -pub type LocalStream = Pin>>; -pub type LocalTryStream = LocalStream>; -pub type SendStream = Pin + Send>>; -pub type SendTryStream = SendStream>; -pub type SyncStream = Pin + Sync>>; -pub type SyncTryStream = SyncStream>; -pub type UnpinStream = LocalStream; -pub type UnpinTryStream = UnpinStream>; -pub struct PinnedStream(PhantomPinned, PhantomData); +type PinnedTryFuture = PinnedFuture>; + +type LocalStream = Pin>>; +type LocalTryStream = LocalStream>; +type SendStream = Pin + Send>>; +type SendTryStream = SendStream>; +type SyncStream = Pin + Sync>>; +type SyncTryStream = SyncStream>; +type SendSyncStream = Pin + Send + Sync>>; +type SendSyncTryStream = SendSyncStream>; +type UnpinStream = LocalStream; +type UnpinTryStream = UnpinStream>; +struct PinnedStream(PhantomPinned, PhantomData); impl Stream for PinnedStream { type Item = T; fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> { unimplemented!() } } -pub type PinnedTryStream = PinnedStream>; +type PinnedTryStream = PinnedStream>; -pub type LocalSink = Pin>>; -pub type SendSink = Pin + Send>>; -pub type SyncSink = Pin + Sync>>; -pub type UnpinSink = LocalSink; -pub struct PinnedSink(PhantomPinned, PhantomData<(T, E)>); +type LocalSink = Pin>>; +type SendSink = Pin + Send>>; +type SyncSink = Pin + Sync>>; +type UnpinSink = LocalSink; +struct PinnedSink(PhantomPinned, PhantomData<(T, E)>); impl Sink for PinnedSink { type Error = E; fn poll_ready(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> { @@ -68,7 +73,7 @@ impl Sink for PinnedSink { } /// Assert Send/Sync/Unpin for all public types in `futures::channel`. -pub mod channel { +mod channel { use super::*; use futures::channel::*; @@ -115,11 +120,11 @@ pub mod channel { assert_impl!(oneshot::Canceled: Sync); assert_impl!(oneshot::Canceled: Unpin); - assert_impl!(oneshot::Cancellation<()>: Send); - assert_not_impl!(oneshot::Cancellation<*const ()>: Send); - assert_impl!(oneshot::Cancellation<()>: Sync); - assert_not_impl!(oneshot::Cancellation<*const ()>: Sync); - assert_impl!(oneshot::Cancellation: Unpin); + assert_impl!(oneshot::Cancellation<'_, ()>: Send); + assert_not_impl!(oneshot::Cancellation<'_, *const ()>: Send); + assert_impl!(oneshot::Cancellation<'_, ()>: Sync); + assert_not_impl!(oneshot::Cancellation<'_, *const ()>: Sync); + assert_impl!(oneshot::Cancellation<'_, PhantomPinned>: Unpin); assert_impl!(oneshot::Receiver<()>: Send); assert_not_impl!(oneshot::Receiver<*const ()>: Send); @@ -135,7 +140,7 @@ pub mod channel { } /// Assert Send/Sync/Unpin for all public types in `futures::compat`. -pub mod compat { +mod compat { use super::*; use futures::compat::*; @@ -177,7 +182,7 @@ pub mod compat { } /// Assert Send/Sync/Unpin for all public types in `futures::executor`. -pub mod executor { +mod executor { use super::*; use futures::executor::*; @@ -215,7 +220,7 @@ pub mod executor { } /// Assert Send/Sync/Unpin for all public types in `futures::future`. -pub mod future { +mod future { use super::*; use futures::future::*; @@ -301,9 +306,9 @@ pub mod future { assert_impl!(Fuse: Unpin); assert_not_impl!(Fuse: Unpin); - assert_impl!(FutureObj<*const ()>: Send); - assert_not_impl!(FutureObj<()>: Sync); - assert_impl!(FutureObj: Unpin); + assert_impl!(FutureObj<'_, *const ()>: Send); + assert_not_impl!(FutureObj<'_, ()>: Sync); + assert_impl!(FutureObj<'_, PhantomPinned>: Unpin); assert_impl!(Inspect: Send); assert_not_impl!(Inspect: Send); @@ -365,9 +370,10 @@ pub mod future { assert_impl!(JoinAll>: Send); assert_not_impl!(JoinAll: Send); assert_not_impl!(JoinAll: Send); - assert_impl!(JoinAll>: Sync); - assert_not_impl!(JoinAll: Sync); - assert_not_impl!(JoinAll: Sync); + assert_impl!(JoinAll>: Sync); + assert_not_impl!(JoinAll>: Sync); + assert_not_impl!(JoinAll>: Sync); + assert_not_impl!(JoinAll: Sync); assert_impl!(JoinAll: Unpin); assert_impl!(Lazy<()>: Send); @@ -376,9 +382,9 @@ pub mod future { assert_not_impl!(Lazy<*const ()>: Sync); assert_impl!(Lazy: Unpin); - assert_not_impl!(LocalFutureObj<()>: Send); - assert_not_impl!(LocalFutureObj<()>: Sync); - assert_impl!(LocalFutureObj: Unpin); + assert_not_impl!(LocalFutureObj<'_, ()>: Send); + assert_not_impl!(LocalFutureObj<'_, ()>: Sync); + assert_impl!(LocalFutureObj<'_, PhantomPinned>: Unpin); assert_impl!(Map: Send); assert_not_impl!(Map: Send); @@ -579,9 +585,10 @@ pub mod future { assert_impl!(TryJoinAll>: Send); assert_not_impl!(TryJoinAll: Send); assert_not_impl!(TryJoinAll: Send); - assert_impl!(TryJoinAll>: Sync); - assert_not_impl!(TryJoinAll: Sync); - assert_not_impl!(TryJoinAll: Sync); + assert_impl!(TryJoinAll>: Sync); + assert_not_impl!(TryJoinAll>: Sync); + assert_not_impl!(TryJoinAll>: Sync); + assert_not_impl!(TryJoinAll: Sync); assert_impl!(TryJoinAll: Unpin); assert_impl!(TrySelect: Send); @@ -646,7 +653,7 @@ pub mod future { } /// Assert Send/Sync/Unpin for all public types in `futures::io`. -pub mod io { +mod io { use super::*; use futures::io::{Sink, *}; @@ -687,23 +694,23 @@ pub mod io { assert_impl!(Close<'_, ()>: Unpin); assert_not_impl!(Close<'_, PhantomPinned>: Unpin); - assert_impl!(Copy<(), ()>: Send); - assert_not_impl!(Copy<(), *const ()>: Send); - assert_not_impl!(Copy<*const (), ()>: Send); - assert_impl!(Copy<(), ()>: Sync); - assert_not_impl!(Copy<(), *const ()>: Sync); - assert_not_impl!(Copy<*const (), ()>: Sync); - assert_impl!(Copy<(), PhantomPinned>: Unpin); - assert_not_impl!(Copy: Unpin); - - assert_impl!(CopyBuf<(), ()>: Send); - assert_not_impl!(CopyBuf<(), *const ()>: Send); - assert_not_impl!(CopyBuf<*const (), ()>: Send); - assert_impl!(CopyBuf<(), ()>: Sync); - assert_not_impl!(CopyBuf<(), *const ()>: Sync); - assert_not_impl!(CopyBuf<*const (), ()>: Sync); - assert_impl!(CopyBuf<(), PhantomPinned>: Unpin); - assert_not_impl!(CopyBuf: Unpin); + assert_impl!(Copy<'_, (), ()>: Send); + assert_not_impl!(Copy<'_, (), *const ()>: Send); + assert_not_impl!(Copy<'_, *const (), ()>: Send); + assert_impl!(Copy<'_, (), ()>: Sync); + assert_not_impl!(Copy<'_, (), *const ()>: Sync); + assert_not_impl!(Copy<'_, *const (), ()>: Sync); + assert_impl!(Copy<'_, (), PhantomPinned>: Unpin); + assert_not_impl!(Copy<'_, PhantomPinned, ()>: Unpin); + + assert_impl!(CopyBuf<'_, (), ()>: Send); + assert_not_impl!(CopyBuf<'_, (), *const ()>: Send); + assert_not_impl!(CopyBuf<'_, *const (), ()>: Send); + assert_impl!(CopyBuf<'_, (), ()>: Sync); + assert_not_impl!(CopyBuf<'_, (), *const ()>: Sync); + assert_not_impl!(CopyBuf<'_, *const (), ()>: Sync); + assert_impl!(CopyBuf<'_, (), PhantomPinned>: Unpin); + assert_not_impl!(CopyBuf<'_, PhantomPinned, ()>: Unpin); assert_impl!(Cursor<()>: Send); assert_not_impl!(Cursor<*const ()>: Send); @@ -884,7 +891,7 @@ pub mod io { } /// Assert Send/Sync/Unpin for all public types in `futures::lock`. -pub mod lock { +mod lock { use super::*; use futures::lock::*; @@ -960,7 +967,7 @@ pub mod lock { } /// Assert Send/Sync/Unpin for all public types in `futures::sink`. -pub mod sink { +mod sink { use super::*; use futures::sink::{self, *}; use std::marker::Send; @@ -1089,7 +1096,7 @@ pub mod sink { } /// Assert Send/Sync/Unpin for all public types in `futures::stream`. -pub mod stream { +mod stream { use super::*; use futures::{io, stream::*}; @@ -1118,10 +1125,9 @@ pub mod stream { assert_not_impl!(Buffered>: Send); assert_not_impl!(Buffered>: Send); assert_not_impl!(Buffered>>: Send); - assert_impl!(Buffered>>: Sync); - assert_not_impl!(Buffered>: Sync); - assert_not_impl!(Buffered>: Sync); - assert_not_impl!(Buffered>>: Sync); + assert_impl!(Buffered>>: Sync); + assert_not_impl!(Buffered>>: Sync); + assert_not_impl!(Buffered>>: Sync); assert_impl!(Buffered>: Unpin); assert_not_impl!(Buffered>: Unpin); @@ -1303,9 +1309,10 @@ pub mod stream { assert_impl!(FuturesOrdered>: Send); assert_not_impl!(FuturesOrdered: Send); assert_not_impl!(FuturesOrdered: Send); - assert_impl!(FuturesOrdered>: Sync); - assert_not_impl!(FuturesOrdered>: Sync); - assert_not_impl!(FuturesOrdered>: Sync); + assert_impl!(FuturesOrdered>: Sync); + assert_not_impl!(FuturesOrdered>: Sync); + assert_not_impl!(FuturesOrdered>: Sync); + assert_not_impl!(FuturesOrdered: Sync); assert_impl!(FuturesOrdered: Unpin); assert_impl!(FuturesUnordered<()>: Send); @@ -1647,11 +1654,12 @@ pub mod stream { assert_not_impl!(TryBuffered>>: Send); assert_not_impl!(TryBuffered>>: Send); assert_not_impl!(TryBuffered>>: Send); - assert_impl!(TryBuffered>>: Sync); - assert_not_impl!(TryBuffered>>: Sync); - assert_not_impl!(TryBuffered>>: Sync); - assert_not_impl!(TryBuffered>>: Sync); - assert_not_impl!(TryBuffered>>: Sync); + assert_impl!(TryBuffered>>: Sync); + assert_not_impl!(TryBuffered>>: Sync); + assert_not_impl!(TryBuffered>>: Sync); + assert_not_impl!(TryBuffered>>: Sync); + assert_not_impl!(TryBuffered>>: Sync); + assert_not_impl!(TryBuffered>>: Sync); assert_impl!(TryBuffered>: Unpin); assert_not_impl!(TryBuffered>: Unpin); @@ -1828,33 +1836,33 @@ pub mod stream { assert_not_impl!(Zip: Unpin); assert_not_impl!(Zip: Unpin); - assert_impl!(futures_unordered::Iter<()>: Send); - assert_not_impl!(futures_unordered::Iter<*const ()>: Send); - assert_impl!(futures_unordered::Iter<()>: Sync); - assert_not_impl!(futures_unordered::Iter<*const ()>: Sync); - assert_impl!(futures_unordered::Iter<()>: Unpin); + assert_impl!(futures_unordered::Iter<'_, ()>: Send); + assert_not_impl!(futures_unordered::Iter<'_, *const ()>: Send); + assert_impl!(futures_unordered::Iter<'_, ()>: Sync); + assert_not_impl!(futures_unordered::Iter<'_, *const ()>: Sync); + assert_impl!(futures_unordered::Iter<'_, ()>: Unpin); // The definition of futures_unordered::Iter has `Fut: Unpin` bounds. - // assert_not_impl!(futures_unordered::Iter: Unpin); + // assert_not_impl!(futures_unordered::Iter<'_, PhantomPinned>: Unpin); - assert_impl!(futures_unordered::IterMut<()>: Send); - assert_not_impl!(futures_unordered::IterMut<*const ()>: Send); - assert_impl!(futures_unordered::IterMut<()>: Sync); - assert_not_impl!(futures_unordered::IterMut<*const ()>: Sync); - assert_impl!(futures_unordered::IterMut<()>: Unpin); + assert_impl!(futures_unordered::IterMut<'_, ()>: Send); + assert_not_impl!(futures_unordered::IterMut<'_, *const ()>: Send); + assert_impl!(futures_unordered::IterMut<'_, ()>: Sync); + assert_not_impl!(futures_unordered::IterMut<'_, *const ()>: Sync); + assert_impl!(futures_unordered::IterMut<'_, ()>: Unpin); // The definition of futures_unordered::IterMut has `Fut: Unpin` bounds. - // assert_not_impl!(futures_unordered::IterMut: Unpin); + // assert_not_impl!(futures_unordered::IterMut<'_, PhantomPinned>: Unpin); - assert_impl!(futures_unordered::IterPinMut<()>: Send); - assert_not_impl!(futures_unordered::IterPinMut<*const ()>: Send); - assert_impl!(futures_unordered::IterPinMut<()>: Sync); - assert_not_impl!(futures_unordered::IterPinMut<*const ()>: Sync); - assert_impl!(futures_unordered::IterPinMut: Unpin); + assert_impl!(futures_unordered::IterPinMut<'_, ()>: Send); + assert_not_impl!(futures_unordered::IterPinMut<'_, *const ()>: Send); + assert_impl!(futures_unordered::IterPinMut<'_, ()>: Sync); + assert_not_impl!(futures_unordered::IterPinMut<'_, *const ()>: Sync); + assert_impl!(futures_unordered::IterPinMut<'_, PhantomPinned>: Unpin); - assert_impl!(futures_unordered::IterPinRef<()>: Send); - assert_not_impl!(futures_unordered::IterPinRef<*const ()>: Send); - assert_impl!(futures_unordered::IterPinRef<()>: Sync); - assert_not_impl!(futures_unordered::IterPinRef<*const ()>: Sync); - assert_impl!(futures_unordered::IterPinRef: Unpin); + assert_impl!(futures_unordered::IterPinRef<'_, ()>: Send); + assert_not_impl!(futures_unordered::IterPinRef<'_, *const ()>: Send); + assert_impl!(futures_unordered::IterPinRef<'_, ()>: Sync); + assert_not_impl!(futures_unordered::IterPinRef<'_, *const ()>: Sync); + assert_impl!(futures_unordered::IterPinRef<'_, PhantomPinned>: Unpin); assert_impl!(futures_unordered::IntoIter<()>: Send); assert_not_impl!(futures_unordered::IntoIter<*const ()>: Send); @@ -1865,7 +1873,7 @@ pub mod stream { } /// Assert Send/Sync/Unpin for all public types in `futures::task`. -pub mod task { +mod task { use super::*; use futures::task::*; @@ -1873,13 +1881,13 @@ pub mod task { assert_impl!(AtomicWaker: Sync); assert_impl!(AtomicWaker: Unpin); - assert_impl!(FutureObj<*const ()>: Send); - assert_not_impl!(FutureObj<()>: Sync); - assert_impl!(FutureObj: Unpin); + assert_impl!(FutureObj<'_, *const ()>: Send); + assert_not_impl!(FutureObj<'_, ()>: Sync); + assert_impl!(FutureObj<'_, PhantomPinned>: Unpin); - assert_not_impl!(LocalFutureObj<()>: Send); - assert_not_impl!(LocalFutureObj<()>: Sync); - assert_impl!(LocalFutureObj: Unpin); + assert_not_impl!(LocalFutureObj<'_, ()>: Send); + assert_not_impl!(LocalFutureObj<'_, ()>: Sync); + assert_impl!(LocalFutureObj<'_, PhantomPinned>: Unpin); assert_impl!(SpawnError: Send); assert_impl!(SpawnError: Sync); diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/bilock.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/bilock.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/bilock.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/bilock.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/compat.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/compat.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/compat.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/compat.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/eager_drop.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/eager_drop.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/eager_drop.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/eager_drop.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/eventual.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/eventual.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/eventual.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/eventual.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_abortable.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_abortable.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_abortable.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_abortable.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_basic_combinators.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_basic_combinators.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_basic_combinators.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_basic_combinators.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_fuse.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_fuse.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_fuse.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_fuse.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_inspect.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_inspect.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_inspect.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_inspect.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_join.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_join.rs similarity index 91% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_join.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_join.rs index f5df9d777512..0556a6e62c73 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_join.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_join.rs @@ -1,5 +1,5 @@ use futures::executor::block_on; -use futures::future::Future; +use futures::future::{self, Future}; use std::task::Poll; /// This tests verifies (through miri) that self-referencing @@ -21,7 +21,7 @@ async fn trouble() { fn yield_now() -> impl Future { let mut yielded = false; - std::future::poll_fn(move |cx| { + future::poll_fn(move |cx| { if core::mem::replace(&mut yielded, true) { Poll::Ready(()) } else { diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_join_all.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_join_all.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_join_all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_join_all.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_obj.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_obj.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_obj.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_obj.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_select_all.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_select_all.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_select_all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_select_all.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_select_ok.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_select_ok.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_select_ok.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_select_ok.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_shared.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_shared.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_shared.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_shared.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_try_flatten_stream.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_try_flatten_stream.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_try_flatten_stream.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_try_flatten_stream.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_try_join_all.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_try_join_all.rs similarity index 93% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_try_join_all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_try_join_all.rs index 9a824872f7aa..892e77592017 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/future_try_join_all.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/future_try_join_all.rs @@ -1,8 +1,7 @@ use futures::executor::block_on; +use futures::future::{err, ok, try_join_all, Future, TryJoinAll}; use futures::pin_mut; -use futures_util::future::{err, ok, try_join_all, TryJoinAll}; use std::fmt::Debug; -use std::future::Future; #[track_caller] fn assert_done(actual_fut: impl Future, expected: T) diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_buf_reader.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_buf_reader.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_buf_reader.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_buf_reader.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_buf_writer.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_buf_writer.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_buf_writer.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_buf_writer.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_cursor.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_cursor.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_cursor.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_cursor.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_line_writer.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_line_writer.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_line_writer.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_line_writer.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_lines.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_lines.rs similarity index 71% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_lines.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_lines.rs index 5ce01a694531..62afef326af7 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_lines.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_lines.rs @@ -1,6 +1,6 @@ use futures::executor::block_on; use futures::future::{Future, FutureExt}; -use futures::io::{AsyncBufReadExt, Cursor}; +use futures::io::{AsyncBufReadExt, AsyncRead, Cursor}; use futures::stream::{self, StreamExt, TryStreamExt}; use futures::task::Poll; use futures_test::io::AsyncReadTestExt; @@ -27,6 +27,24 @@ macro_rules! run_next { }; } +struct IOErrorRead(bool); + +impl AsyncRead for IOErrorRead { + fn poll_read( + mut self: std::pin::Pin<&mut Self>, + _cx: &mut std::task::Context<'_>, + b: &mut [u8], + ) -> Poll> { + if self.0 { + Poll::Ready(Err(std::io::ErrorKind::InvalidInput.into())) + } else { + self.0 = true; + b[..16].fill(b'x'); + Ok(16).into() + } + } +} + #[test] fn lines() { let buf = Cursor::new(&b"12\r"[..]); @@ -58,3 +76,9 @@ fn maybe_pending() { assert_eq!(run_next!(s), "".to_string()); assert!(run(s.next()).is_none()); } + +#[test] +fn issue2862() { + let mut lines = futures::io::BufReader::new(IOErrorRead(false)).lines(); + assert!(block_on(lines.next()).unwrap().is_err()) +} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_exact.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_exact.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_exact.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_exact.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_line.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_line.rs similarity index 60% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_line.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_line.rs index 88a877928a68..c7559c593b72 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_line.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_line.rs @@ -3,6 +3,7 @@ use futures::future::{Future, FutureExt}; use futures::io::{AsyncBufReadExt, Cursor}; use futures::stream::{self, StreamExt, TryStreamExt}; use futures::task::Poll; +use futures::AsyncRead; use futures_test::io::AsyncReadTestExt; use futures_test::task::noop_context; @@ -15,6 +16,24 @@ fn run(mut f: F) -> F::Output { } } +struct IOErrorRead(bool); + +impl AsyncRead for IOErrorRead { + fn poll_read( + mut self: std::pin::Pin<&mut Self>, + _cx: &mut std::task::Context<'_>, + b: &mut [u8], + ) -> Poll> { + if self.0 { + Poll::Ready(Err(std::io::ErrorKind::InvalidInput.into())) + } else { + self.0 = true; + b[..16].fill(b'x'); + Ok(16).into() + } + } +} + #[test] fn read_line() { let mut buf = Cursor::new(b"12"); @@ -34,6 +53,30 @@ fn read_line() { assert_eq!(v, ""); } +#[test] +fn read_line_drop() { + // string contents should be preserved if the future is dropped + let mut buf = Cursor::new(b"12\n\n"); + let mut v = String::from("abc"); + drop(buf.read_line(&mut v)); + assert_eq!(v, "abc"); +} + +#[test] +fn read_line_io_error() { + let mut r = futures::io::BufReader::new(IOErrorRead(false)); + let _ = block_on(r.read_line(&mut String::new())); +} + +#[test] +fn read_line_utf8_error() { + let mut buf = Cursor::new(b"12\xFF\n\n"); + let mut v = String::from("abc"); + let res = block_on(buf.read_line(&mut v)); + assert_eq!(res.unwrap_err().kind(), std::io::ErrorKind::InvalidData); + assert_eq!(v, "abc"); +} + #[test] fn maybe_pending() { let mut buf = b"12".interleave_pending(); diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_to_end.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_to_end.rs similarity index 92% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_to_end.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_to_end.rs index 7122511fcb2c..0441b3bc4f2a 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_to_end.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_to_end.rs @@ -14,14 +14,14 @@ fn issue2310() { impl MyRead { fn new() -> Self { - MyRead { first: false } + Self { first: false } } } impl AsyncRead for MyRead { fn poll_read( mut self: Pin<&mut Self>, - _cx: &mut Context, + _cx: &mut Context<'_>, _buf: &mut [u8], ) -> Poll> { Poll::Ready(if !self.first { @@ -41,7 +41,7 @@ fn issue2310() { impl VecWrapper { fn new() -> Self { - VecWrapper { inner: Vec::new() } + Self { inner: Vec::new() } } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_to_string.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_to_string.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_to_string.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_to_string.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_until.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_until.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_read_until.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_read_until.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_window.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_window.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_window.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_window.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_write.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/io_write.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/io_write.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/lock_mutex.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/lock_mutex.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/lock_mutex.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/lock_mutex.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/macro_comma_support.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/macro_comma_support.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/macro_comma_support.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/macro_comma_support.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/object_safety.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/object_safety.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/object_safety.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/object_safety.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/oneshot.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/oneshot.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/oneshot.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/oneshot.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/ready_queue.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/ready_queue.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/ready_queue.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/ready_queue.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/recurse.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/recurse.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/recurse.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/recurse.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/sink.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/sink.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/sink.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/sink.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/sink_fanout.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/sink_fanout.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/sink_fanout.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/sink_fanout.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream.rs similarity index 81% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream.rs index 5cde45833f09..3122b587d081 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream.rs @@ -14,6 +14,7 @@ use futures::stream::{self, StreamExt}; use futures::task::Poll; use futures::{ready, FutureExt}; use futures_core::Stream; +use futures_executor::ThreadPool; use futures_test::task::noop_context; #[test] @@ -65,6 +66,7 @@ fn flatten_unordered() { use futures::task::*; use std::convert::identity; use std::pin::Pin; + use std::sync::atomic::{AtomicBool, Ordering}; use std::thread; use std::time::Duration; @@ -77,7 +79,7 @@ fn flatten_unordered() { impl Stream for DataStream { type Item = u8; - fn poll_next(mut self: Pin<&mut Self>, ctx: &mut Context) -> Poll> { + fn poll_next(mut self: Pin<&mut Self>, ctx: &mut Context<'_>) -> Poll> { if !self.polled { if !self.wake_immediately { let waker = ctx.waker().clone(); @@ -108,7 +110,7 @@ fn flatten_unordered() { impl Stream for Interchanger { type Item = DataStream; - fn poll_next(mut self: Pin<&mut Self>, ctx: &mut Context) -> Poll> { + fn poll_next(mut self: Pin<&mut Self>, ctx: &mut Context<'_>) -> Poll> { if !self.polled { self.polled = true; if !self.wake_immediately { @@ -322,6 +324,78 @@ fn flatten_unordered() { assert_eq!(values, (0..60).collect::>()); }); } + + fn timeout(time: Duration, value: I) -> impl Future { + let ready = Arc::new(AtomicBool::new(false)); + let mut spawned = false; + + future::poll_fn(move |cx| { + if !spawned { + let waker = cx.waker().clone(); + let ready = ready.clone(); + + std::thread::spawn(move || { + std::thread::sleep(time); + ready.store(true, Ordering::Release); + + waker.wake_by_ref() + }); + spawned = true; + } + + if ready.load(Ordering::Acquire) { + Poll::Ready(value.clone()) + } else { + Poll::Pending + } + }) + } + + fn build_nested_fu(st: S) -> impl Stream + Unpin + where + S::Item: Clone, + { + let inner = st + .then(|item| timeout(Duration::from_millis(50), item)) + .enumerate() + .map(|(idx, value)| { + stream::once(if idx % 2 == 0 { + future::ready(value).left_future() + } else { + timeout(Duration::from_millis(100), value).right_future() + }) + }) + .flatten_unordered(None); + + stream::once(future::ready(inner)).flatten_unordered(None) + } + + // nested `flatten_unordered` + let te = ThreadPool::new().unwrap(); + let base_handle = te + .spawn_with_handle(async move { + let fu = build_nested_fu(stream::iter(1..=10)); + + assert_eq!(fu.count().await, 10); + }) + .unwrap(); + + block_on(base_handle); + + let empty_state_move_handle = te + .spawn_with_handle(async move { + let mut fu = build_nested_fu(stream::iter(1..10)); + { + let mut cx = noop_context(); + let _ = fu.poll_next_unpin(&mut cx); + let _ = fu.poll_next_unpin(&mut cx); + } + + assert_eq!(fu.count().await, 9); + }) + .unwrap(); + + block_on(empty_state_move_handle); } #[test] @@ -461,3 +535,43 @@ fn select_with_strategy_doesnt_terminate_early() { assert_eq!(count.get(), times_should_poll + 1); } } + +async fn is_even(number: u8) -> bool { + number % 2 == 0 +} + +#[test] +fn all() { + block_on(async { + let empty: [u8; 0] = []; + let st = stream::iter(empty); + let all = st.all(is_even).await; + assert!(all); + + let st = stream::iter([2, 4, 6, 8]); + let all = st.all(is_even).await; + assert!(all); + + let st = stream::iter([2, 3, 4]); + let all = st.all(is_even).await; + assert!(!all); + }); +} + +#[test] +fn any() { + block_on(async { + let empty: [u8; 0] = []; + let st = stream::iter(empty); + let any = st.any(is_even).await; + assert!(!any); + + let st = stream::iter([1, 2, 3]); + let any = st.any(is_even).await; + assert!(any); + + let st = stream::iter([1, 3, 5]); + let any = st.any(is_even).await; + assert!(!any); + }); +} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_abortable.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_abortable.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_abortable.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_abortable.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_buffer_unordered.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_buffer_unordered.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_buffer_unordered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_buffer_unordered.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_catch_unwind.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_catch_unwind.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_catch_unwind.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_catch_unwind.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_futures_ordered.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_futures_ordered.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_futures_ordered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_futures_ordered.rs index 5a4a3e22ee75..f06ce263eb5f 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_futures_ordered.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_futures_ordered.rs @@ -72,7 +72,7 @@ fn test_push_front() { stream.push_front(d_rx); d_tx.send(4).unwrap(); - // we pushed `d_rx` to the front and sent 4, so we should recieve 4 next + // we pushed `d_rx` to the front and sent 4, so we should receive 4 next // and then 3 after it assert_eq!(Poll::Ready(Some(Ok(4))), stream.poll_next_unpin(&mut cx)); assert_eq!(Poll::Ready(Some(Ok(3))), stream.poll_next_unpin(&mut cx)); @@ -165,7 +165,7 @@ fn test_push_front_negative() { b_tx.send(2).unwrap(); c_tx.send(3).unwrap(); - // These should all be recieved in reverse order + // These should all be received in reverse order assert_eq!(Poll::Ready(Some(Ok(3))), stream.poll_next_unpin(&mut cx)); assert_eq!(Poll::Ready(Some(Ok(2))), stream.poll_next_unpin(&mut cx)); assert_eq!(Poll::Ready(Some(Ok(1))), stream.poll_next_unpin(&mut cx)); diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_futures_unordered.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_futures_unordered.rs similarity index 89% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_futures_unordered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_futures_unordered.rs index b5682804793b..e25e755cdeeb 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_futures_unordered.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_futures_unordered.rs @@ -336,7 +336,7 @@ fn polled_only_once_at_most_per_iteration() { impl Future for F { type Output = (); - fn poll(mut self: Pin<&mut Self>, _: &mut Context) -> Poll { + fn poll(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll { if self.polled { panic!("polled twice") } else { @@ -381,3 +381,51 @@ fn clear() { tasks.clear(); assert!(!tasks.is_terminated()); } + +// https://github.com/rust-lang/futures-rs/issues/2529#issuecomment-997290279 +#[test] +fn clear_in_loop() { + const N: usize = + if cfg!(miri) || option_env!("QEMU_LD_PREFIX").is_some() { 100 } else { 10_000 }; + futures::executor::block_on(async { + async fn task() { + let (s, r) = oneshot::channel(); + std::thread::spawn(|| { + std::thread::sleep(std::time::Duration::from_micros(100)); + let _ = s.send(()); + }); + r.await.unwrap() + } + let mut futures = FuturesUnordered::new(); + for _ in 0..N { + for _ in 0..24 { + futures.push(task()); + } + let _ = futures.next().await; + futures.clear(); + } + }); +} + +// https://github.com/rust-lang/futures-rs/issues/2863#issuecomment-2219441515 +#[test] +#[should_panic] +fn panic_on_drop_fut() { + struct BadFuture; + + impl Drop for BadFuture { + fn drop(&mut self) { + panic!() + } + } + + impl Future for BadFuture { + type Output = (); + + fn poll(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll { + Poll::Pending + } + } + + FuturesUnordered::default().push(BadFuture); +} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_into_async_read.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_into_async_read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_into_async_read.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_into_async_read.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_peekable.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_peekable.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_peekable.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_peekable.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_select_all.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_select_all.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_select_all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_select_all.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_select_next_some.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_select_next_some.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_select_next_some.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_select_next_some.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_split.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_split.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_split.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_split.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_try_stream.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_try_stream.rs similarity index 70% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_try_stream.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_try_stream.rs index b3d04b9200c1..57bdd4f3f3fd 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_try_stream.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_try_stream.rs @@ -1,4 +1,5 @@ use core::pin::Pin; +use std::convert::Infallible; use futures::{ stream::{self, repeat, Repeat, StreamExt, TryStreamExt}, @@ -90,7 +91,7 @@ fn try_flatten_unordered() { impl Stream for ErrorStream { type Item = Result>, ()>; - fn poll_next(mut self: Pin<&mut Self>, _: &mut Context) -> Poll> { + fn poll_next(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> { if self.polled > self.error_after { panic!("Polled after error"); } else { @@ -132,3 +133,51 @@ fn try_flatten_unordered() { assert_eq!(taken, 31); }) } + +async fn is_even(number: u8) -> bool { + number % 2 == 0 +} + +#[test] +fn try_all() { + block_on(async { + let empty: [Result; 0] = []; + let st = stream::iter(empty); + let all = st.try_all(is_even).await; + assert_eq!(Ok(true), all); + + let st = stream::iter([Ok::<_, Infallible>(2), Ok(4), Ok(6), Ok(8)]); + let all = st.try_all(is_even).await; + assert_eq!(Ok(true), all); + + let st = stream::iter([Ok::<_, Infallible>(2), Ok(3), Ok(4)]); + let all = st.try_all(is_even).await; + assert_eq!(Ok(false), all); + + let st = stream::iter([Ok(2), Ok(4), Err("err"), Ok(8)]); + let all = st.try_all(is_even).await; + assert_eq!(Err("err"), all); + }); +} + +#[test] +fn try_any() { + block_on(async { + let empty: [Result; 0] = []; + let st = stream::iter(empty); + let any = st.try_any(is_even).await; + assert_eq!(Ok(false), any); + + let st = stream::iter([Ok::<_, Infallible>(1), Ok(2), Ok(3)]); + let any = st.try_any(is_even).await; + assert_eq!(Ok(true), any); + + let st = stream::iter([Ok::<_, Infallible>(1), Ok(3), Ok(5)]); + let any = st.try_any(is_even).await; + assert_eq!(Ok(false), any); + + let st = stream::iter([Ok(1), Ok(3), Err("err"), Ok(8)]); + let any = st.try_any(is_even).await; + assert_eq!(Err("err"), any); + }); +} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_unfold.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_unfold.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/stream_unfold.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/stream_unfold.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/task_arc_wake.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/task_arc_wake.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/task_arc_wake.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/task_arc_wake.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/task_atomic_waker.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/task_atomic_waker.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/task_atomic_waker.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/task_atomic_waker.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/test_macro.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/test_macro.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/test_macro.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/test_macro.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/try_join.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/try_join.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests/try_join.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests/try_join.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests_disabled/all.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests_disabled/all.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests_disabled/all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests_disabled/all.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests_disabled/stream.rs b/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests_disabled/stream.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-0.3.27/tests_disabled/stream.rs rename to third_party/rust/chromium_crates_io/vendor/futures-0.3.31/tests_disabled/stream.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/.cargo_vcs_info.json deleted file mode 100644 index 5e1fc6673862..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "cfc501c9c7ef53c531ed43533bb02845f65ff79e" - }, - "path_in_vcs": "futures-channel" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/build.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/build.rs deleted file mode 100644 index 05e0496d94b5..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/build.rs +++ /dev/null @@ -1,41 +0,0 @@ -// The rustc-cfg listed below are considered public API, but it is *unstable* -// and outside of the normal semver guarantees: -// -// - `futures_no_atomic_cas` -// Assume the target does *not* support atomic CAS operations. -// This is usually detected automatically by the build script, but you may -// need to enable it manually when building for custom targets or using -// non-cargo build systems that don't run the build script. -// -// With the exceptions mentioned above, the rustc-cfg emitted by the build -// script are *not* public API. - -#![warn(rust_2018_idioms, single_use_lifetimes)] - -use std::env; - -include!("no_atomic_cas.rs"); - -fn main() { - let target = match env::var("TARGET") { - Ok(target) => target, - Err(e) => { - println!( - "cargo:warning={}: unable to get TARGET environment variable: {}", - env!("CARGO_PKG_NAME"), - e - ); - return; - } - }; - - // Note that this is `no_*`, not `has_*`. This allows treating - // `cfg(target_has_atomic = "ptr")` as true when the build script doesn't - // run. This is needed for compatibility with non-cargo build systems that - // don't run the build script. - if NO_ATOMIC_CAS.contains(&&*target) { - println!("cargo:rustc-cfg=futures_no_atomic_cas"); - } - - println!("cargo:rerun-if-changed=no_atomic_cas.rs"); -} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/no_atomic_cas.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/no_atomic_cas.rs deleted file mode 100644 index 16ec628cdfd6..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/no_atomic_cas.rs +++ /dev/null @@ -1,17 +0,0 @@ -// This file is @generated by no_atomic_cas.sh. -// It is not intended for manual editing. - -const NO_ATOMIC_CAS: &[&str] = &[ - "armv4t-none-eabi", - "armv5te-none-eabi", - "avr-unknown-gnu-atmega328", - "bpfeb-unknown-none", - "bpfel-unknown-none", - "msp430-none-elf", - "riscv32i-unknown-none-elf", - "riscv32im-unknown-none-elf", - "riscv32imc-unknown-none-elf", - "thumbv4t-none-eabi", - "thumbv5te-none-eabi", - "thumbv6m-none-eabi", -]; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/.cargo_vcs_info.json new file mode 100644 index 000000000000..8fc5c7f4ac4c --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "1e052816b09890925cfdfcbe8d390cdaae5e4c38" + }, + "path_in_vcs": "futures-channel" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/Cargo.toml similarity index 59% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/Cargo.toml index 894bca104a2a..8f634fc468b2 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/Cargo.toml @@ -11,9 +11,14 @@ [package] edition = "2018" -rust-version = "1.45" +rust-version = "1.56" name = "futures-channel" -version = "0.3.27" +version = "0.3.31" +build = false +autobins = false +autoexamples = false +autotests = false +autobenches = false description = """ Channels for asynchronous communication using futures-rs. """ @@ -29,12 +34,40 @@ rustdoc-args = [ "docsrs", ] +[lib] +name = "futures_channel" +path = "src/lib.rs" + +[[test]] +name = "channel" +path = "tests/channel.rs" + +[[test]] +name = "mpsc" +path = "tests/mpsc.rs" + +[[test]] +name = "mpsc-close" +path = "tests/mpsc-close.rs" + +[[test]] +name = "mpsc-size_hint" +path = "tests/mpsc-size_hint.rs" + +[[test]] +name = "oneshot" +path = "tests/oneshot.rs" + +[[bench]] +name = "sync_mpsc" +path = "benches/sync_mpsc.rs" + [dependencies.futures-core] -version = "0.3.27" +version = "0.3.31" default-features = false [dependencies.futures-sink] -version = "0.3.27" +version = "0.3.31" optional = true default-features = false @@ -50,3 +83,14 @@ std = [ "futures-core/std", ] unstable = [] + +[lints.rust] +missing_debug_implementations = "warn" +rust_2018_idioms = "warn" +single_use_lifetimes = "warn" +unreachable_pub = "warn" + +[lints.rust.unexpected_cfgs] +level = "warn" +priority = 0 +check-cfg = ["cfg(futures_sanitizer)"] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/Cargo.toml.orig similarity index 80% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/Cargo.toml.orig index 4caea4e27f5a..4d430b78d700 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/Cargo.toml.orig @@ -1,8 +1,8 @@ [package] name = "futures-channel" -version = "0.3.27" +version = "0.3.31" edition = "2018" -rust-version = "1.45" +rust-version = "1.56" license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" homepage = "https://rust-lang.github.io/futures-rs" @@ -22,8 +22,8 @@ unstable = [] cfg-target-has-atomic = [] [dependencies] -futures-core = { path = "../futures-core", version = "0.3.27", default-features = false } -futures-sink = { path = "../futures-sink", version = "0.3.27", default-features = false, optional = true } +futures-core = { path = "../futures-core", version = "0.3.31", default-features = false } +futures-sink = { path = "../futures-sink", version = "0.3.31", default-features = false, optional = true } [dev-dependencies] futures = { path = "../futures", default-features = true } @@ -32,3 +32,6 @@ futures-test = { path = "../futures-test", default-features = true } [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] + +[lints] +workspace = true diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/LICENSE-APACHE diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/LICENSE-MIT diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/README.md b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/README.md similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/README.md rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/README.md index 3287be924c66..e886bd1cadb9 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/README.md +++ b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/README.md @@ -11,7 +11,7 @@ Add this to your `Cargo.toml`: futures-channel = "0.3" ``` -The current `futures-channel` requires Rust 1.45 or later. +The current `futures-channel` requires Rust 1.56 or later. ## License diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/benches/sync_mpsc.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/benches/sync_mpsc.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/benches/sync_mpsc.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/benches/sync_mpsc.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/lib.rs similarity index 71% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/lib.rs index 4cd936d552c0..09d6a1e2de1f 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/lib.rs @@ -11,14 +11,7 @@ //! All items are only available when the `std` or `alloc` feature of this //! library is activated, and it is activated by default. -#![cfg_attr(not(feature = "std"), no_std)] -#![warn( - missing_debug_implementations, - missing_docs, - rust_2018_idioms, - single_use_lifetimes, - unreachable_pub -)] +#![no_std] #![doc(test( no_crate_inject, attr( @@ -26,17 +19,20 @@ allow(dead_code, unused_assignments, unused_variables) ) ))] +#![warn(missing_docs, unsafe_op_in_unsafe_fn)] -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] extern crate alloc; +#[cfg(feature = "std")] +extern crate std; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod lock; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "std")] pub mod mpsc; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub mod oneshot; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/lock.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/lock.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/lock.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/lock.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/mpsc/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/mpsc/mod.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/mpsc/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/mpsc/mod.rs index cf45fe77fe1b..03a8a53898a1 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/mpsc/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/mpsc/mod.rs @@ -119,27 +119,28 @@ impl Unpin for BoundedSenderInner {} /// The transmission end of a bounded mpsc channel. /// -/// This value is created by the [`channel`](channel) function. +/// This value is created by the [`channel`] function. pub struct Sender(Option>); /// The transmission end of an unbounded mpsc channel. /// -/// This value is created by the [`unbounded`](unbounded) function. +/// This value is created by the [`unbounded`] function. pub struct UnboundedSender(Option>); +#[allow(dead_code)] trait AssertKinds: Send + Sync + Clone {} impl AssertKinds for UnboundedSender {} /// The receiving end of a bounded mpsc channel. /// -/// This value is created by the [`channel`](channel) function. +/// This value is created by the [`channel`] function. pub struct Receiver { inner: Option>>, } /// The receiving end of an unbounded mpsc channel. /// -/// This value is created by the [`unbounded`](unbounded) function. +/// This value is created by the [`unbounded`] function. pub struct UnboundedReceiver { inner: Option>>, } @@ -302,13 +303,13 @@ struct State { } // The `is_open` flag is stored in the left-most bit of `Inner::state` -const OPEN_MASK: usize = usize::max_value() - (usize::max_value() >> 1); +const OPEN_MASK: usize = usize::MAX - (usize::MAX >> 1); // When a new channel is created, it is created in the open state with no // pending messages. const INIT_STATE: usize = OPEN_MASK; -// The maximum number of messages that a channel can track is `usize::max_value() >> 1` +// The maximum number of messages that a channel can track is `usize::MAX >> 1` const MAX_CAPACITY: usize = !(OPEN_MASK); // The maximum requested buffer size must be less than the maximum capacity of @@ -343,9 +344,8 @@ impl SenderTask { /// guaranteed slot in the channel capacity, and on top of that there are /// `buffer` "first come, first serve" slots available to all senders. /// -/// The [`Receiver`](Receiver) returned implements the -/// [`Stream`](futures_core::stream::Stream) trait, while [`Sender`](Sender) implements -/// `Sink`. +/// The [`Receiver`] returned implements the [`Stream`] trait, while [`Sender`] +/// implements `Sink`. pub fn channel(buffer: usize) -> (Sender, Receiver) { // Check that the requested buffer size does not exceed the maximum buffer // size permitted by the system. @@ -842,6 +842,20 @@ impl UnboundedSender { let ptr = self.0.as_ref().map(|inner| inner.ptr()); ptr.hash(hasher); } + + /// Return the number of messages in the queue or 0 if channel is disconnected. + pub fn len(&self) -> usize { + if let Some(sender) = &self.0 { + decode_state(sender.inner.state.load(SeqCst)).num_messages + } else { + 0 + } + } + + /// Return false is channel has no queued messages, true otherwise. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } } impl Clone for Sender { diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/mpsc/queue.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/mpsc/queue.rs similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/mpsc/queue.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/mpsc/queue.rs index 02ec633fe045..78cbdce6ec1f 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/mpsc/queue.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/mpsc/queue.rs @@ -43,6 +43,7 @@ pub(super) use self::PopResult::*; +use std::boxed::Box; use std::cell::UnsafeCell; use std::ptr; use std::sync::atomic::{AtomicPtr, Ordering}; @@ -113,22 +114,24 @@ impl Queue { /// /// This function is unsafe because only one thread can call it at a time. pub(super) unsafe fn pop(&self) -> PopResult { - let tail = *self.tail.get(); - let next = (*tail).next.load(Ordering::Acquire); - - if !next.is_null() { - *self.tail.get() = next; - assert!((*tail).value.is_none()); - assert!((*next).value.is_some()); - let ret = (*next).value.take().unwrap(); - drop(Box::from_raw(tail)); - return Data(ret); - } + unsafe { + let tail = *self.tail.get(); + let next = (*tail).next.load(Ordering::Acquire); + + if !next.is_null() { + *self.tail.get() = next; + assert!((*tail).value.is_none()); + assert!((*next).value.is_some()); + let ret = (*next).value.take().unwrap(); + drop(Box::from_raw(tail)); + return Data(ret); + } - if self.head.load(Ordering::Acquire) == tail { - Empty - } else { - Inconsistent + if self.head.load(Ordering::Acquire) == tail { + Empty + } else { + Inconsistent + } } } @@ -138,7 +141,7 @@ impl Queue { /// This function is unsafe because only one thread can call it at a time. pub(super) unsafe fn pop_spin(&self) -> Option { loop { - match self.pop() { + match unsafe { self.pop() } { Empty => return None, Data(t) => return Some(t), // Inconsistent means that there will be a message to pop diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/mpsc/sink_impl.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/mpsc/sink_impl.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/mpsc/sink_impl.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/mpsc/sink_impl.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/oneshot.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/oneshot.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/oneshot.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/oneshot.rs index 70449f43d678..fe5b115a3377 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/oneshot.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/oneshot.rs @@ -14,7 +14,7 @@ use crate::lock::Lock; /// A future for a value that will be provided by another asynchronous task. /// -/// This is created by the [`channel`](channel) function. +/// This is created by the [`channel`] function. #[must_use = "futures do nothing unless you `.await` or poll them"] pub struct Receiver { inner: Arc>, @@ -22,7 +22,7 @@ pub struct Receiver { /// A means of transmitting a single value to another task. /// -/// This is created by the [`channel`](channel) function. +/// This is created by the [`channel`] function. pub struct Sender { inner: Arc>, } @@ -332,8 +332,8 @@ impl Sender { /// Completes this oneshot with a successful result. /// /// This function will consume `self` and indicate to the other end, the - /// [`Receiver`](Receiver), that the value provided is the result of the - /// computation this represents. + /// [`Receiver`], that the value provided is the result of the computation + /// this represents. /// /// If the value is successfully enqueued for the remote end to receive, /// then `Ok(())` is returned. If the receiving end was dropped before @@ -343,7 +343,7 @@ impl Sender { } /// Polls this `Sender` half to detect whether its associated - /// [`Receiver`](Receiver) has been dropped. + /// [`Receiver`] has been dropped. /// /// # Return values /// @@ -359,10 +359,10 @@ impl Sender { } /// Creates a future that resolves when this `Sender`'s corresponding - /// [`Receiver`](Receiver) half has hung up. + /// [`Receiver`] half has hung up. /// /// This is a utility wrapping [`poll_canceled`](Sender::poll_canceled) - /// to expose a [`Future`](core::future::Future). + /// to expose a [`Future`]. pub fn cancellation(&mut self) -> Cancellation<'_, T> { Cancellation { inner: self } } @@ -413,8 +413,8 @@ impl Future for Cancellation<'_, T> { } } -/// Error returned from a [`Receiver`](Receiver) when the corresponding -/// [`Sender`](Sender) is dropped. +/// Error returned from a [`Receiver`] when the corresponding [`Sender`] is +/// dropped. #[derive(Clone, Copy, PartialEq, Eq, Debug)] pub struct Canceled; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/channel.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/channel.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/channel.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/channel.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/mpsc-close.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/mpsc-close.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/mpsc-close.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/mpsc-close.rs index 1a14067eca6c..2d49936fc12a 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/mpsc-close.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/mpsc-close.rs @@ -174,10 +174,10 @@ fn stress_try_send_as_receiver_closes() { } impl TestTask { /// Create a new TestTask - fn new() -> (TestTask, mpsc::Sender) { + fn new() -> (Self, mpsc::Sender) { let (command_tx, command_rx) = mpsc::channel::(0); ( - TestTask { + Self { command_rx, test_rx: None, countdown: 0, // 0 means no countdown is in progress. diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/mpsc-size_hint.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/mpsc-size_hint.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/mpsc-size_hint.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/mpsc-size_hint.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/mpsc.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/mpsc.rs similarity index 95% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/mpsc.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/mpsc.rs index 444c8e10fd88..28d476b05a6e 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/mpsc.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/mpsc.rs @@ -10,6 +10,7 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::{Arc, Mutex}; use std::thread; +#[allow(dead_code)] trait AssertSend: Send {} impl AssertSend for mpsc::Sender {} impl AssertSend for mpsc::Receiver {} @@ -632,3 +633,26 @@ fn send_backpressure_multi_senders() { let item = block_on(rx.next()).unwrap(); assert_eq!(item, 2); } + +/// Test that empty channel has zero length and that non-empty channel has length equal to number +/// of enqueued items +#[test] +fn unbounded_len() { + let (tx, mut rx) = mpsc::unbounded(); + assert_eq!(tx.len(), 0); + assert!(tx.is_empty()); + tx.unbounded_send(1).unwrap(); + assert_eq!(tx.len(), 1); + assert!(!tx.is_empty()); + tx.unbounded_send(2).unwrap(); + assert_eq!(tx.len(), 2); + assert!(!tx.is_empty()); + let item = block_on(rx.next()).unwrap(); + assert_eq!(item, 1); + assert_eq!(tx.len(), 1); + assert!(!tx.is_empty()); + let item = block_on(rx.next()).unwrap(); + assert_eq!(item, 2); + assert_eq!(tx.len(), 0); + assert!(tx.is_empty()); +} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/oneshot.rs b/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/oneshot.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/tests/oneshot.rs rename to third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/tests/oneshot.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/.cargo_vcs_info.json deleted file mode 100644 index 111c2e423c6e..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "cfc501c9c7ef53c531ed43533bb02845f65ff79e" - }, - "path_in_vcs": "futures-core" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/build.rs b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/build.rs deleted file mode 100644 index 05e0496d94b5..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/build.rs +++ /dev/null @@ -1,41 +0,0 @@ -// The rustc-cfg listed below are considered public API, but it is *unstable* -// and outside of the normal semver guarantees: -// -// - `futures_no_atomic_cas` -// Assume the target does *not* support atomic CAS operations. -// This is usually detected automatically by the build script, but you may -// need to enable it manually when building for custom targets or using -// non-cargo build systems that don't run the build script. -// -// With the exceptions mentioned above, the rustc-cfg emitted by the build -// script are *not* public API. - -#![warn(rust_2018_idioms, single_use_lifetimes)] - -use std::env; - -include!("no_atomic_cas.rs"); - -fn main() { - let target = match env::var("TARGET") { - Ok(target) => target, - Err(e) => { - println!( - "cargo:warning={}: unable to get TARGET environment variable: {}", - env!("CARGO_PKG_NAME"), - e - ); - return; - } - }; - - // Note that this is `no_*`, not `has_*`. This allows treating - // `cfg(target_has_atomic = "ptr")` as true when the build script doesn't - // run. This is needed for compatibility with non-cargo build systems that - // don't run the build script. - if NO_ATOMIC_CAS.contains(&&*target) { - println!("cargo:rustc-cfg=futures_no_atomic_cas"); - } - - println!("cargo:rerun-if-changed=no_atomic_cas.rs"); -} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/no_atomic_cas.rs b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/no_atomic_cas.rs deleted file mode 100644 index 16ec628cdfd6..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/no_atomic_cas.rs +++ /dev/null @@ -1,17 +0,0 @@ -// This file is @generated by no_atomic_cas.sh. -// It is not intended for manual editing. - -const NO_ATOMIC_CAS: &[&str] = &[ - "armv4t-none-eabi", - "armv5te-none-eabi", - "avr-unknown-gnu-atmega328", - "bpfeb-unknown-none", - "bpfel-unknown-none", - "msp430-none-elf", - "riscv32i-unknown-none-elf", - "riscv32im-unknown-none-elf", - "riscv32imc-unknown-none-elf", - "thumbv4t-none-eabi", - "thumbv5te-none-eabi", - "thumbv6m-none-eabi", -]; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/__internal/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/__internal/mod.rs deleted file mode 100644 index c902eb4bfbb5..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/__internal/mod.rs +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(not(futures_no_atomic_cas))] -mod atomic_waker; -#[cfg(not(futures_no_atomic_cas))] -pub use self::atomic_waker::AtomicWaker; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/.cargo_vcs_info.json new file mode 100644 index 000000000000..dcab6780cb17 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "1e052816b09890925cfdfcbe8d390cdaae5e4c38" + }, + "path_in_vcs": "futures-core" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/Cargo.toml similarity index 71% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/Cargo.toml index 90151449010e..6842872e2eae 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/Cargo.toml @@ -13,7 +13,12 @@ edition = "2018" rust-version = "1.36" name = "futures-core" -version = "0.3.27" +version = "0.3.31" +build = false +autobins = false +autoexamples = false +autotests = false +autobenches = false description = """ The core traits and types in for the `futures` library. """ @@ -29,8 +34,13 @@ rustdoc-args = [ "docsrs", ] +[lib] +name = "futures_core" +path = "src/lib.rs" + [dependencies.portable-atomic] -version = "1" +version = "1.3" +features = ["require-cas"] optional = true default-features = false @@ -42,3 +52,14 @@ cfg-target-has-atomic = [] default = ["std"] std = ["alloc"] unstable = [] + +[lints.rust] +missing_debug_implementations = "warn" +rust_2018_idioms = "warn" +single_use_lifetimes = "warn" +unreachable_pub = "warn" + +[lints.rust.unexpected_cfgs] +level = "warn" +priority = 0 +check-cfg = ["cfg(futures_sanitizer)"] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/Cargo.toml.orig similarity index 80% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/Cargo.toml.orig index 0fddd7068069..a7d710e6a589 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/Cargo.toml.orig @@ -1,6 +1,6 @@ [package] name = "futures-core" -version = "0.3.27" +version = "0.3.31" edition = "2018" rust-version = "1.36" license = "MIT OR Apache-2.0" @@ -21,7 +21,7 @@ unstable = [] cfg-target-has-atomic = [] [dependencies] -portable-atomic = { version = "1", default-features = false, optional = true } +portable-atomic = { version = "1.3", optional = true, default-features = false, features = ["require-cas"] } [dev-dependencies] futures = { path = "../futures" } @@ -29,3 +29,6 @@ futures = { path = "../futures" } [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] + +[lints] +workspace = true diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/LICENSE-APACHE diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/LICENSE-MIT diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/README.md b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/README.md rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/README.md diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/future.rs b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/future.rs similarity index 83% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/future.rs rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/future.rs index 7540cd027eb1..30c0323a6bd4 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/future.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/future.rs @@ -9,10 +9,20 @@ pub use core::future::Future; /// An owned dynamically typed [`Future`] for use in cases where you can't /// statically type your result or need to add some indirection. +/// +/// This type is often created by the [`boxed`] method on [`FutureExt`]. See its documentation for more. +/// +/// [`boxed`]: https://docs.rs/futures/latest/futures/future/trait.FutureExt.html#method.boxed +/// [`FutureExt`]: https://docs.rs/futures/latest/futures/future/trait.FutureExt.html #[cfg(feature = "alloc")] pub type BoxFuture<'a, T> = Pin + Send + 'a>>; /// `BoxFuture`, but without the `Send` requirement. +/// +/// This type is often created by the [`boxed_local`] method on [`FutureExt`]. See its documentation for more. +/// +/// [`boxed_local`]: https://docs.rs/futures/latest/futures/future/trait.FutureExt.html#method.boxed_local +/// [`FutureExt`]: https://docs.rs/futures/latest/futures/future/trait.FutureExt.html #[cfg(feature = "alloc")] pub type LocalBoxFuture<'a, T> = Pin + 'a>>; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/lib.rs similarity index 62% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/lib.rs index 9c31d8d90bdf..6ff6b974b156 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/lib.rs @@ -1,9 +1,6 @@ //! Core traits and types for asynchronous operations in Rust. -#![cfg_attr(not(feature = "std"), no_std)] -#![warn(missing_debug_implementations, missing_docs, rust_2018_idioms, unreachable_pub)] -// It cannot be included in the published code because this lints have false positives in the minimum required version. -#![cfg_attr(test, warn(single_use_lifetimes))] +#![no_std] #![doc(test( no_crate_inject, attr( @@ -11,9 +8,12 @@ allow(dead_code, unused_assignments, unused_variables) ) ))] +#![warn(missing_docs, /* unsafe_op_in_unsafe_fn */)] // unsafe_op_in_unsafe_fn requires Rust 1.52 #[cfg(feature = "alloc")] extern crate alloc; +#[cfg(feature = "std")] +extern crate std; pub mod future; #[doc(no_inline)] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/stream.rs b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/stream.rs similarity index 89% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/stream.rs rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/stream.rs index ad5350b79588..dd07d5aa014d 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/stream.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/stream.rs @@ -6,10 +6,20 @@ use core::task::{Context, Poll}; /// An owned dynamically typed [`Stream`] for use in cases where you can't /// statically type your result or need to add some indirection. +/// +/// This type is often created by the [`boxed`] method on [`StreamExt`]. See its documentation for more. +/// +/// [`boxed`]: https://docs.rs/futures/latest/futures/stream/trait.StreamExt.html#method.boxed +/// [`StreamExt`]: https://docs.rs/futures/latest/futures/stream/trait.StreamExt.html #[cfg(feature = "alloc")] pub type BoxStream<'a, T> = Pin + Send + 'a>>; /// `BoxStream`, but without the `Send` requirement. +/// +/// This type is often created by the [`boxed_local`] method on [`StreamExt`]. See its documentation for more. +/// +/// [`boxed_local`]: https://docs.rs/futures/latest/futures/stream/trait.StreamExt.html#method.boxed_local +/// [`StreamExt`]: https://docs.rs/futures/latest/futures/stream/trait.StreamExt.html #[cfg(feature = "alloc")] pub type LocalBoxStream<'a, T> = Pin + 'a>>; @@ -38,15 +48,15 @@ pub trait Stream { /// stream state: /// /// - `Poll::Pending` means that this stream's next value is not ready - /// yet. Implementations will ensure that the current task will be notified - /// when the next value may be ready. + /// yet. Implementations will ensure that the current task will be notified + /// when the next value may be ready. /// /// - `Poll::Ready(Some(val))` means that the stream has successfully - /// produced a value, `val`, and may produce further values on subsequent - /// `poll_next` calls. + /// produced a value, `val`, and may produce further values on subsequent + /// `poll_next` calls. /// /// - `Poll::Ready(None)` means that the stream has terminated, and - /// `poll_next` should not be invoked again. + /// `poll_next` should not be invoked again. /// /// # Panics /// diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/__internal/atomic_waker.rs b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/__internal/atomic_waker.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/__internal/atomic_waker.rs rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/__internal/atomic_waker.rs index 0677e83b0968..3b82fb7cc8e1 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/__internal/atomic_waker.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/__internal/atomic_waker.rs @@ -206,6 +206,7 @@ impl AtomicWaker { /// Create an `AtomicWaker`. pub const fn new() -> Self { // Make sure that task is Sync + #[allow(dead_code)] trait AssertSync: Sync {} impl AssertSync for Waker {} @@ -271,7 +272,12 @@ impl AtomicWaker { WAITING => { unsafe { // Locked acquired, update the waker cell - *self.waker.get() = Some(waker.clone()); + + // Avoid cloning the waker if the old waker will awaken the same task. + match &*self.waker.get() { + Some(old_waker) if old_waker.will_wake(waker) => (), + _ => *self.waker.get() = Some(waker.clone()), + } // Release the lock. If the state transitioned to include // the `WAKING` bit, this means that at least one wake has diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/__internal/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/__internal/mod.rs new file mode 100644 index 000000000000..c2487422800b --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/__internal/mod.rs @@ -0,0 +1,7 @@ +#[cfg_attr(target_os = "none", cfg(any(target_has_atomic = "ptr", feature = "portable-atomic")))] +mod atomic_waker; +#[cfg_attr( + target_os = "none", + cfg(any(target_has_atomic = "ptr", feature = "portable-atomic")) +)] +pub use self::atomic_waker::AtomicWaker; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/poll.rs b/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/poll.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/poll.rs rename to third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/poll.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/.cargo_vcs_info.json similarity index 50% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/.cargo_vcs_info.json rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/.cargo_vcs_info.json index f89b853a6a51..418671a6b0d8 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/.cargo_vcs_info.json +++ b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/.cargo_vcs_info.json @@ -1,6 +1,6 @@ { "git": { - "sha1": "cfc501c9c7ef53c531ed43533bb02845f65ff79e" + "sha1": "1e052816b09890925cfdfcbe8d390cdaae5e4c38" }, "path_in_vcs": "futures-executor" } \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/Cargo.toml similarity index 67% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/Cargo.toml index 1539dc41b7b0..232096f98573 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/Cargo.toml @@ -11,9 +11,14 @@ [package] edition = "2018" -rust-version = "1.45" +rust-version = "1.56" name = "futures-executor" -version = "0.3.27" +version = "0.3.31" +build = false +autobins = false +autoexamples = false +autotests = false +autobenches = false description = """ Executors for asynchronous tasks based on the futures-rs library. """ @@ -29,16 +34,28 @@ rustdoc-args = [ "docsrs", ] +[lib] +name = "futures_executor" +path = "src/lib.rs" + +[[test]] +name = "local_pool" +path = "tests/local_pool.rs" + +[[bench]] +name = "thread_notify" +path = "benches/thread_notify.rs" + [dependencies.futures-core] -version = "0.3.27" +version = "0.3.31" default-features = false [dependencies.futures-task] -version = "0.3.27" +version = "0.3.31" default-features = false [dependencies.futures-util] -version = "0.3.27" +version = "0.3.31" default-features = false [dependencies.num_cpus] @@ -58,3 +75,14 @@ thread-pool = [ "std", "num_cpus", ] + +[lints.rust] +missing_debug_implementations = "warn" +rust_2018_idioms = "warn" +single_use_lifetimes = "warn" +unreachable_pub = "warn" + +[lints.rust.unexpected_cfgs] +level = "warn" +priority = 0 +check-cfg = ["cfg(futures_sanitizer)"] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/Cargo.toml.orig similarity index 73% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/Cargo.toml.orig index d1a44011e75d..978f8ae0184a 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/Cargo.toml.orig @@ -1,8 +1,8 @@ [package] name = "futures-executor" -version = "0.3.27" +version = "0.3.31" edition = "2018" -rust-version = "1.45" +rust-version = "1.56" license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" homepage = "https://rust-lang.github.io/futures-rs" @@ -16,9 +16,9 @@ std = ["futures-core/std", "futures-task/std", "futures-util/std"] thread-pool = ["std", "num_cpus"] [dependencies] -futures-core = { path = "../futures-core", version = "0.3.27", default-features = false } -futures-task = { path = "../futures-task", version = "0.3.27", default-features = false } -futures-util = { path = "../futures-util", version = "0.3.27", default-features = false } +futures-core = { path = "../futures-core", version = "0.3.31", default-features = false } +futures-task = { path = "../futures-task", version = "0.3.31", default-features = false } +futures-util = { path = "../futures-util", version = "0.3.31", default-features = false } num_cpus = { version = "1.8.0", optional = true } [dev-dependencies] @@ -27,3 +27,6 @@ futures = { path = "../futures", features = ["thread-pool"] } [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] + +[lints] +workspace = true diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/LICENSE-APACHE diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/LICENSE-MIT diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/README.md b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/README.md similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/README.md rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/README.md index 67086851e4b7..724ff5bb33ec 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/README.md +++ b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/README.md @@ -11,7 +11,7 @@ Add this to your `Cargo.toml`: futures-executor = "0.3" ``` -The current `futures-executor` requires Rust 1.45 or later. +The current `futures-executor` requires Rust 1.56 or later. ## License diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/benches/thread_notify.rs b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/benches/thread_notify.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/benches/thread_notify.rs rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/benches/thread_notify.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/enter.rs b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/enter.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/enter.rs rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/enter.rs index cb58c30bb75e..b0e43e059333 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/enter.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/enter.rs @@ -1,7 +1,7 @@ use std::cell::Cell; use std::fmt; -thread_local!(static ENTERED: Cell = Cell::new(false)); +std::thread_local!(static ENTERED: Cell = Cell::new(false)); /// Represents an executor context. /// diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/lib.rs similarity index 93% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/lib.rs index b1af87545fc0..a0dc49d7ba8c 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/lib.rs @@ -36,14 +36,7 @@ //! [`spawn_obj`]: https://docs.rs/futures/0.3/futures/task/trait.Spawn.html#tymethod.spawn_obj //! [`spawn_local_obj`]: https://docs.rs/futures/0.3/futures/task/trait.LocalSpawn.html#tymethod.spawn_local_obj -#![cfg_attr(not(feature = "std"), no_std)] -#![warn( - missing_debug_implementations, - missing_docs, - rust_2018_idioms, - single_use_lifetimes, - unreachable_pub -)] +#![no_std] #![doc(test( no_crate_inject, attr( @@ -51,8 +44,12 @@ allow(dead_code, unused_assignments, unused_variables) ) ))] +#![warn(missing_docs, unsafe_op_in_unsafe_fn)] #![cfg_attr(docsrs, feature(doc_cfg))] +#[cfg(feature = "std")] +extern crate std; + #[cfg(feature = "std")] mod local_pool; #[cfg(feature = "std")] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/local_pool.rs b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/local_pool.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/local_pool.rs rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/local_pool.rs index 8a9bc2fc9024..90c2a4152010 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/local_pool.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/local_pool.rs @@ -15,6 +15,7 @@ use std::sync::{ Arc, }; use std::thread::{self, Thread}; +use std::vec::Vec; /// A single-threaded task pool for polling futures to completion. /// @@ -33,8 +34,7 @@ pub struct LocalPool { incoming: Rc, } -/// A handle to a [`LocalPool`](LocalPool) that implements -/// [`Spawn`](futures_task::Spawn). +/// A handle to a [`LocalPool`] that implements [`Spawn`](futures_task::Spawn). #[derive(Clone, Debug)] pub struct LocalSpawner { incoming: Weak, @@ -53,7 +53,7 @@ pub(crate) struct ThreadNotify { unparked: AtomicBool, } -thread_local! { +std::thread_local! { static CURRENT_THREAD_NOTIFY: Arc = Arc::new(ThreadNotify { thread: thread::current(), unparked: AtomicBool::new(false), @@ -310,8 +310,7 @@ impl Default for LocalPool { /// /// This function will block the caller until the given future has completed. /// -/// Use a [`LocalPool`](LocalPool) if you need finer-grained control over -/// spawned tasks. +/// Use a [`LocalPool`] if you need finer-grained control over spawned tasks. pub fn block_on(f: F) -> F::Output { pin_mut!(f); run_executor(|cx| f.as_mut().poll(cx)) diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/thread_pool.rs b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/thread_pool.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/thread_pool.rs rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/thread_pool.rs index 537100895345..c4442e4eeb26 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/thread_pool.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/thread_pool.rs @@ -5,9 +5,12 @@ use futures_core::task::{Context, Poll}; use futures_task::{waker_ref, ArcWake}; use futures_task::{FutureObj, Spawn, SpawnError}; use futures_util::future::FutureExt; +use std::boxed::Box; use std::cmp; use std::fmt; +use std::format; use std::io; +use std::string::String; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::mpsc; use std::sync::{Arc, Mutex}; @@ -42,6 +45,7 @@ pub struct ThreadPoolBuilder { before_stop: Option>, } +#[allow(dead_code)] trait AssertSendSync: Send + Sync {} impl AssertSendSync for ThreadPool {} @@ -358,7 +362,6 @@ impl ArcWake for WakeHandle { #[cfg(test)] mod tests { use super::*; - use std::sync::mpsc; #[test] fn test_drop_after_start() { diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/unpark_mutex.rs b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/unpark_mutex.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/unpark_mutex.rs rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/unpark_mutex.rs index ac5112cfa2ee..f45164be9d8e 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/unpark_mutex.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/unpark_mutex.rs @@ -108,7 +108,7 @@ impl UnparkMutex { /// Callable only from the `POLLING`/`REPOLL` states, i.e. between /// successful calls to `notify` and `wait`/`complete`. pub(crate) unsafe fn wait(&self, data: D) -> Result<(), D> { - *self.inner.get() = Some(data); + unsafe { *self.inner.get() = Some(data) } match self.status.compare_exchange(POLLING, WAITING, SeqCst, SeqCst) { // no unparks came in while we were running @@ -119,7 +119,7 @@ impl UnparkMutex { Err(status) => { assert_eq!(status, REPOLL); self.status.store(POLLING, SeqCst); - Err((*self.inner.get()).take().unwrap()) + Err(unsafe { (*self.inner.get()).take().unwrap() }) } } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/tests/local_pool.rs b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/tests/local_pool.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/tests/local_pool.rs rename to third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/tests/local_pool.rs index 72ce74b74423..d9b2e9d797af 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/tests/local_pool.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/tests/local_pool.rs @@ -3,6 +3,7 @@ use futures::executor::LocalPool; use futures::future::{self, lazy, poll_fn, Future}; use futures::task::{Context, LocalSpawn, LocalSpawnExt, Poll, Spawn, SpawnExt, Waker}; use std::cell::{Cell, RefCell}; +use std::marker::PhantomData; use std::pin::Pin; use std::rc::Rc; use std::sync::atomic::{AtomicBool, Ordering}; @@ -10,7 +11,7 @@ use std::sync::Arc; use std::thread; use std::time::Duration; -struct Pending(Rc<()>); +struct Pending(PhantomData>); impl Future for Pending { type Output = (); @@ -21,7 +22,7 @@ impl Future for Pending { } fn pending() -> Pending { - Pending(Rc::new(())) + Pending(PhantomData) } #[test] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/.cargo_vcs_info.json deleted file mode 100644 index d6a799738493..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "cfc501c9c7ef53c531ed43533bb02845f65ff79e" - }, - "path_in_vcs": "futures-io" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/.cargo_vcs_info.json new file mode 100644 index 000000000000..16bde76c6775 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "1e052816b09890925cfdfcbe8d390cdaae5e4c38" + }, + "path_in_vcs": "futures-io" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/Cargo.toml similarity index 71% rename from third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/Cargo.toml index 5ee442fd1c41..6c8923e4bafc 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/Cargo.toml @@ -13,7 +13,12 @@ edition = "2018" rust-version = "1.36" name = "futures-io" -version = "0.3.27" +version = "0.3.31" +build = false +autobins = false +autoexamples = false +autotests = false +autobenches = false description = """ The `AsyncRead`, `AsyncWrite`, `AsyncSeek`, and `AsyncBufRead` traits for the futures-rs library. """ @@ -29,9 +34,24 @@ rustdoc-args = [ "docsrs", ] +[lib] +name = "futures_io" +path = "src/lib.rs" + [dependencies] [features] default = ["std"] std = [] unstable = [] + +[lints.rust] +missing_debug_implementations = "warn" +rust_2018_idioms = "warn" +single_use_lifetimes = "warn" +unreachable_pub = "warn" + +[lints.rust.unexpected_cfgs] +level = "warn" +priority = 0 +check-cfg = ["cfg(futures_sanitizer)"] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/Cargo.toml.orig similarity index 93% rename from third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/Cargo.toml.orig index b4f0383c2570..e5320d4281ca 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/Cargo.toml.orig @@ -1,6 +1,6 @@ [package] name = "futures-io" -version = "0.3.27" +version = "0.3.31" edition = "2018" rust-version = "1.36" license = "MIT OR Apache-2.0" @@ -24,3 +24,6 @@ unstable = [] [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] + +[lints] +workspace = true diff --git a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/LICENSE-APACHE diff --git a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/LICENSE-MIT diff --git a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/README.md b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/README.md rename to third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/README.md diff --git a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/src/lib.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/src/lib.rs index e91eb784923b..9c2fa056ad76 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/src/lib.rs @@ -8,10 +8,7 @@ //! All items of this library are only available when the `std` feature of this //! library is activated, and it is activated by default. -#![cfg_attr(not(feature = "std"), no_std)] -#![warn(missing_debug_implementations, missing_docs, rust_2018_idioms, unreachable_pub)] -// It cannot be included in the published code because this lints have false positives in the minimum required version. -#![cfg_attr(test, warn(single_use_lifetimes))] +#![no_std] #![doc(test( no_crate_inject, attr( @@ -19,14 +16,20 @@ allow(dead_code, unused_assignments, unused_variables) ) ))] +#![warn(missing_docs, /* unsafe_op_in_unsafe_fn */)] // unsafe_op_in_unsafe_fn requires Rust 1.52 #![cfg_attr(docsrs, feature(doc_cfg))] +#[cfg(feature = "std")] +extern crate std; + #[cfg(feature = "std")] mod if_std { + use std::boxed::Box; use std::io; use std::ops::DerefMut; use std::pin::Pin; use std::task::{Context, Poll}; + use std::vec::Vec; // Re-export some types from `std::io` so that users don't have to deal // with conflicts when `use`ing `futures::io` and `std::io`. diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/.cargo_vcs_info.json deleted file mode 100644 index 94cbbb378b50..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "cfc501c9c7ef53c531ed43533bb02845f65ff79e" - }, - "path_in_vcs": "futures-macro" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/.cargo_vcs_info.json new file mode 100644 index 000000000000..5d8a4376de9f --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "1e052816b09890925cfdfcbe8d390cdaae5e4c38" + }, + "path_in_vcs": "futures-macro" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/Cargo.toml similarity index 65% rename from third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/Cargo.toml index 5cc98fdda0ba..49852cf57a31 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/Cargo.toml @@ -11,27 +11,46 @@ [package] edition = "2018" -rust-version = "1.45" +rust-version = "1.56" name = "futures-macro" -version = "0.3.27" +version = "0.3.31" +build = false +autobins = false +autoexamples = false +autotests = false +autobenches = false description = """ The futures-rs procedural macro implementations. """ homepage = "https://rust-lang.github.io/futures-rs" +readme = false license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" [lib] +name = "futures_macro" +path = "src/lib.rs" proc-macro = true [dependencies.proc-macro2] -version = "1.0" +version = "1.0.60" [dependencies.quote] version = "1.0" [dependencies.syn] -version = "1.0.56" +version = "2.0.52" features = ["full"] [features] + +[lints.rust] +missing_debug_implementations = "warn" +rust_2018_idioms = "warn" +single_use_lifetimes = "warn" +unreachable_pub = "warn" + +[lints.rust.unexpected_cfgs] +level = "warn" +priority = 0 +check-cfg = ["cfg(futures_sanitizer)"] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/Cargo.toml.orig similarity index 69% rename from third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/Cargo.toml.orig index d865c1e3b609..fdd7be3dd848 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/Cargo.toml.orig @@ -1,8 +1,8 @@ [package] name = "futures-macro" -version = "0.3.27" +version = "0.3.31" edition = "2018" -rust-version = "1.45" +rust-version = "1.56" license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" homepage = "https://rust-lang.github.io/futures-rs" @@ -16,6 +16,9 @@ proc-macro = true [features] [dependencies] -proc-macro2 = "1.0" +proc-macro2 = "1.0.60" quote = "1.0" -syn = { version = "1.0.56", features = ["full"] } +syn = { version = "2.0.52", features = ["full"] } + +[lints] +workspace = true diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/LICENSE-APACHE diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/LICENSE-MIT diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/executor.rs b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/executor.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/executor.rs rename to third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/executor.rs index 40a091f94c61..7f1d0a93f46e 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/executor.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/executor.rs @@ -44,6 +44,7 @@ pub(crate) fn test(args: TokenStream, item: TokenStream) -> TokenStream { #path::block_on(async #body) }) .unwrap(), + None, )]; let gen = quote! { diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/join.rs b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/join.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/join.rs rename to third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/join.rs index 94e356f729b0..0e891b3aad30 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/join.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/join.rs @@ -1,4 +1,4 @@ -//! The futures-rs `join! macro implementation. +//! The futures-rs `join!` macro implementation. use proc_macro::TokenStream; use proc_macro2::{Span, TokenStream as TokenStream2}; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/lib.rs similarity index 81% rename from third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/lib.rs index 0afe34b83b2a..c1b94785e8a6 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/lib.rs @@ -1,6 +1,5 @@ //! The futures-rs procedural macro implementations. -#![warn(rust_2018_idioms, single_use_lifetimes, unreachable_pub)] #![doc(test( no_crate_inject, attr( @@ -9,11 +8,6 @@ ) ))] -// Since https://github.com/rust-lang/cargo/pull/7700 `proc_macro` is part of the prelude for -// proc-macro crates, but to support older compilers we still need this explicit `extern crate`. -#[allow(unused_extern_crates)] -extern crate proc_macro; - use proc_macro::TokenStream; mod executor; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/select.rs b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/select.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/select.rs rename to third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/select.rs index 0c8e5f1ca0c4..ca83a87e4a47 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/select.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/select.rs @@ -1,4 +1,4 @@ -//! The futures-rs `select! macro implementation. +//! The futures-rs `select!` macro implementation. use proc_macro::TokenStream; use proc_macro2::Span; @@ -51,7 +51,7 @@ impl Parse for Select { CaseKind::Default } else { // ` = ` - let pat = input.parse()?; + let pat = Pat::parse_multi_with_leading_vert(input)?; input.parse::()?; let expr = input.parse()?; CaseKind::Normal(pat, expr) @@ -59,7 +59,7 @@ impl Parse for Select { // `=> ` input.parse::]>()?; - let expr = input.parse::()?; + let expr = Expr::parse_with_earlier_boundary_rule(input)?; // Commas after the expression are only optional if it's a `Block` // or it is the last branch in the `match`. @@ -232,7 +232,7 @@ fn select_inner(input: TokenStream, random: bool) -> TokenStream { let branches = parsed.normal_fut_handlers.into_iter().zip(variant_names.iter()).map( |((pat, expr), variant_name)| { quote! { - #enum_ident::#variant_name(#pat) => { #expr }, + #enum_ident::#variant_name(#pat) => #expr, } }, ); diff --git a/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/stream_select.rs b/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/stream_select.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/stream_select.rs rename to third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/stream_select.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/.cargo_vcs_info.json deleted file mode 100644 index 03e21aba7117..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "cfc501c9c7ef53c531ed43533bb02845f65ff79e" - }, - "path_in_vcs": "futures-sink" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/.cargo_vcs_info.json new file mode 100644 index 000000000000..b2d2d8d6e7a0 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "1e052816b09890925cfdfcbe8d390cdaae5e4c38" + }, + "path_in_vcs": "futures-sink" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/Cargo.toml similarity index 69% rename from third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/Cargo.toml index 837caf33be43..3cc632398dee 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/Cargo.toml @@ -13,7 +13,12 @@ edition = "2018" rust-version = "1.36" name = "futures-sink" -version = "0.3.27" +version = "0.3.31" +build = false +autobins = false +autoexamples = false +autotests = false +autobenches = false description = """ The asynchronous `Sink` trait for the futures-rs library. """ @@ -25,9 +30,24 @@ repository = "https://github.com/rust-lang/futures-rs" [package.metadata.docs.rs] all-features = true +[lib] +name = "futures_sink" +path = "src/lib.rs" + [dependencies] [features] alloc = [] default = ["std"] std = ["alloc"] + +[lints.rust] +missing_debug_implementations = "warn" +rust_2018_idioms = "warn" +single_use_lifetimes = "warn" +unreachable_pub = "warn" + +[lints.rust.unexpected_cfgs] +level = "warn" +priority = 0 +check-cfg = ["cfg(futures_sanitizer)"] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/Cargo.toml.orig similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/Cargo.toml.orig index b2234a3eae66..21f82591551e 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/Cargo.toml.orig @@ -1,6 +1,6 @@ [package] name = "futures-sink" -version = "0.3.27" +version = "0.3.31" edition = "2018" rust-version = "1.36" license = "MIT OR Apache-2.0" @@ -19,3 +19,6 @@ alloc = [] [package.metadata.docs.rs] all-features = true + +[lints] +workspace = true diff --git a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/LICENSE-APACHE diff --git a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/LICENSE-MIT diff --git a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/README.md b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/README.md similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/README.md rename to third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/README.md diff --git a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/src/lib.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/src/lib.rs index 0328740efd42..52394e8c2af5 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/src/lib.rs @@ -3,10 +3,7 @@ //! This crate contains the `Sink` trait which allows values to be sent //! asynchronously. -#![cfg_attr(not(feature = "std"), no_std)] -#![warn(missing_debug_implementations, missing_docs, rust_2018_idioms, unreachable_pub)] -// It cannot be included in the published code because this lints have false positives in the minimum required version. -#![cfg_attr(test, warn(single_use_lifetimes))] +#![no_std] #![doc(test( no_crate_inject, attr( @@ -14,9 +11,12 @@ allow(dead_code, unused_assignments, unused_variables) ) ))] +#![warn(missing_docs, /* unsafe_op_in_unsafe_fn */)] // unsafe_op_in_unsafe_fn requires Rust 1.52 #[cfg(feature = "alloc")] extern crate alloc; +#[cfg(feature = "std")] +extern crate std; use core::ops::DerefMut; use core::pin::Pin; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/.cargo_vcs_info.json deleted file mode 100644 index 3c6ddfa4dbb6..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "cfc501c9c7ef53c531ed43533bb02845f65ff79e" - }, - "path_in_vcs": "futures-task" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/build.rs b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/build.rs deleted file mode 100644 index 05e0496d94b5..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/build.rs +++ /dev/null @@ -1,41 +0,0 @@ -// The rustc-cfg listed below are considered public API, but it is *unstable* -// and outside of the normal semver guarantees: -// -// - `futures_no_atomic_cas` -// Assume the target does *not* support atomic CAS operations. -// This is usually detected automatically by the build script, but you may -// need to enable it manually when building for custom targets or using -// non-cargo build systems that don't run the build script. -// -// With the exceptions mentioned above, the rustc-cfg emitted by the build -// script are *not* public API. - -#![warn(rust_2018_idioms, single_use_lifetimes)] - -use std::env; - -include!("no_atomic_cas.rs"); - -fn main() { - let target = match env::var("TARGET") { - Ok(target) => target, - Err(e) => { - println!( - "cargo:warning={}: unable to get TARGET environment variable: {}", - env!("CARGO_PKG_NAME"), - e - ); - return; - } - }; - - // Note that this is `no_*`, not `has_*`. This allows treating - // `cfg(target_has_atomic = "ptr")` as true when the build script doesn't - // run. This is needed for compatibility with non-cargo build systems that - // don't run the build script. - if NO_ATOMIC_CAS.contains(&&*target) { - println!("cargo:rustc-cfg=futures_no_atomic_cas"); - } - - println!("cargo:rerun-if-changed=no_atomic_cas.rs"); -} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/no_atomic_cas.rs b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/no_atomic_cas.rs deleted file mode 100644 index 16ec628cdfd6..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/no_atomic_cas.rs +++ /dev/null @@ -1,17 +0,0 @@ -// This file is @generated by no_atomic_cas.sh. -// It is not intended for manual editing. - -const NO_ATOMIC_CAS: &[&str] = &[ - "armv4t-none-eabi", - "armv5te-none-eabi", - "avr-unknown-gnu-atmega328", - "bpfeb-unknown-none", - "bpfel-unknown-none", - "msp430-none-elf", - "riscv32i-unknown-none-elf", - "riscv32im-unknown-none-elf", - "riscv32imc-unknown-none-elf", - "thumbv4t-none-eabi", - "thumbv5te-none-eabi", - "thumbv6m-none-eabi", -]; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/.cargo_vcs_info.json new file mode 100644 index 000000000000..258421b86ef8 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "1e052816b09890925cfdfcbe8d390cdaae5e4c38" + }, + "path_in_vcs": "futures-task" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/Cargo.toml similarity index 68% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/Cargo.toml index b1a1e56a46ea..c34ac5a5fb26 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/Cargo.toml @@ -11,9 +11,14 @@ [package] edition = "2018" -rust-version = "1.45" +rust-version = "1.56" name = "futures-task" -version = "0.3.27" +version = "0.3.31" +build = false +autobins = false +autoexamples = false +autotests = false +autobenches = false description = """ Tools for working with tasks. """ @@ -25,6 +30,10 @@ repository = "https://github.com/rust-lang/futures-rs" [package.metadata.docs.rs] all-features = true +[lib] +name = "futures_task" +path = "src/lib.rs" + [dependencies] [dev-dependencies] @@ -35,3 +44,14 @@ cfg-target-has-atomic = [] default = ["std"] std = ["alloc"] unstable = [] + +[lints.rust] +missing_debug_implementations = "warn" +rust_2018_idioms = "warn" +single_use_lifetimes = "warn" +unreachable_pub = "warn" + +[lints.rust.unexpected_cfgs] +level = "warn" +priority = 0 +check-cfg = ["cfg(futures_sanitizer)"] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/Cargo.toml.orig similarity index 88% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/Cargo.toml.orig index 34f66e4eab18..f1848dacbdaf 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/Cargo.toml.orig @@ -1,8 +1,8 @@ [package] name = "futures-task" -version = "0.3.27" +version = "0.3.31" edition = "2018" -rust-version = "1.45" +rust-version = "1.56" license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" homepage = "https://rust-lang.github.io/futures-rs" @@ -27,3 +27,6 @@ futures = { path = "../futures" } [package.metadata.docs.rs] all-features = true + +[lints] +workspace = true diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/LICENSE-APACHE diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/LICENSE-MIT diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/README.md b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/README.md similarity index 89% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/README.md rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/README.md index 8ceeba9d5780..1ebec2d73d69 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/README.md +++ b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/README.md @@ -11,7 +11,7 @@ Add this to your `Cargo.toml`: futures-task = "0.3" ``` -The current `futures-task` requires Rust 1.45 or later. +The current `futures-task` requires Rust 1.56 or later. ## License diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/arc_wake.rs b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/arc_wake.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/arc_wake.rs rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/arc_wake.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/future_obj.rs b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/future_obj.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/future_obj.rs rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/future_obj.rs index 071392af6c15..a61138219320 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/future_obj.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/future_obj.rs @@ -29,14 +29,14 @@ impl Unpin for LocalFutureObj<'_, T> {} unsafe fn remove_future_lifetime<'a, T>( ptr: *mut (dyn Future + 'a), ) -> *mut (dyn Future + 'static) { - mem::transmute(ptr) + unsafe { mem::transmute(ptr) } } #[allow(single_use_lifetimes)] unsafe fn remove_drop_lifetime<'a, T>( ptr: unsafe fn(*mut (dyn Future + 'a)), ) -> unsafe fn(*mut (dyn Future + 'static)) { - mem::transmute(ptr) + unsafe { mem::transmute(ptr) } } impl<'a, T> LocalFutureObj<'a, T> { @@ -225,7 +225,7 @@ mod if_alloc { } unsafe fn drop(ptr: *mut (dyn Future + 'a)) { - drop(Box::from_raw(ptr.cast::())) + drop(unsafe { Box::from_raw(ptr.cast::()) }) } } @@ -235,7 +235,7 @@ mod if_alloc { } unsafe fn drop(ptr: *mut (dyn Future + 'a)) { - drop(Box::from_raw(ptr)) + drop(unsafe { Box::from_raw(ptr) }) } } @@ -245,7 +245,7 @@ mod if_alloc { } unsafe fn drop(ptr: *mut (dyn Future + 'a)) { - drop(Box::from_raw(ptr)) + drop(unsafe { Box::from_raw(ptr) }) } } @@ -259,7 +259,7 @@ mod if_alloc { } unsafe fn drop(ptr: *mut (dyn Future + 'a)) { - drop(Pin::from(Box::from_raw(ptr))) + drop(Pin::from(unsafe { Box::from_raw(ptr) })) } } @@ -270,7 +270,7 @@ mod if_alloc { } unsafe fn drop(ptr: *mut (dyn Future + 'a)) { - drop(Pin::from(Box::from_raw(ptr))) + drop(Pin::from(unsafe { Box::from_raw(ptr) })) } } @@ -281,7 +281,7 @@ mod if_alloc { } unsafe fn drop(ptr: *mut (dyn Future + 'a)) { - drop(Pin::from(Box::from_raw(ptr))) + drop(Pin::from(unsafe { Box::from_raw(ptr) })) } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/lib.rs similarity index 64% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/lib.rs index c72460744c71..c119b6b1e46b 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/lib.rs @@ -1,9 +1,6 @@ //! Tools for working with tasks. -#![cfg_attr(not(feature = "std"), no_std)] -#![warn(missing_debug_implementations, missing_docs, rust_2018_idioms, unreachable_pub)] -// It cannot be included in the published code because this lints have false positives in the minimum required version. -#![cfg_attr(test, warn(single_use_lifetimes))] +#![no_std] #![doc(test( no_crate_inject, attr( @@ -11,31 +8,34 @@ allow(dead_code, unused_assignments, unused_variables) ) ))] +#![warn(missing_docs, unsafe_op_in_unsafe_fn)] #[cfg(feature = "alloc")] extern crate alloc; +#[cfg(feature = "std")] +extern crate std; mod spawn; pub use crate::spawn::{LocalSpawn, Spawn, SpawnError}; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod arc_wake; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use crate::arc_wake::ArcWake; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod waker; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use crate::waker::waker; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod waker_ref; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use crate::waker_ref::{waker_ref, WakerRef}; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/noop_waker.rs b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/noop_waker.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/noop_waker.rs rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/noop_waker.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/spawn.rs b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/spawn.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/spawn.rs rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/spawn.rs index f4e63397bd0b..4a9a45a44668 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/spawn.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/spawn.rs @@ -168,7 +168,7 @@ mod if_alloc { } } - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] impl Spawn for alloc::sync::Arc { fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError> { (**self).spawn_obj(future) @@ -179,7 +179,7 @@ mod if_alloc { } } - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] impl LocalSpawn for alloc::sync::Arc { fn spawn_local_obj(&self, future: LocalFutureObj<'static, ()>) -> Result<(), SpawnError> { (**self).spawn_local_obj(future) diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/waker.rs b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/waker.rs similarity index 61% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/waker.rs rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/waker.rs index 79112569c5be..ce90aa83d9a2 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/waker.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/waker.rs @@ -3,7 +3,7 @@ use alloc::sync::Arc; use core::mem; use core::task::{RawWaker, RawWakerVTable, Waker}; -pub(super) fn waker_vtable() -> &'static RawWakerVTable { +pub(super) fn waker_vtable() -> &'static RawWakerVTable { &RawWakerVTable::new( clone_arc_raw::, wake_arc_raw::, @@ -29,31 +29,32 @@ where // code here. We should guard against this by aborting. #[allow(clippy::redundant_clone)] // The clone here isn't actually redundant. -unsafe fn increase_refcount(data: *const ()) { +unsafe fn increase_refcount(data: *const ()) { // Retain Arc, but don't touch refcount by wrapping in ManuallyDrop - let arc = mem::ManuallyDrop::new(Arc::::from_raw(data.cast::())); + let arc = mem::ManuallyDrop::new(unsafe { Arc::::from_raw(data.cast::()) }); // Now increase refcount, but don't drop new refcount either let _arc_clone: mem::ManuallyDrop<_> = arc.clone(); } // used by `waker_ref` -unsafe fn clone_arc_raw(data: *const ()) -> RawWaker { - increase_refcount::(data); +#[inline(always)] +unsafe fn clone_arc_raw(data: *const ()) -> RawWaker { + unsafe { increase_refcount::(data) } RawWaker::new(data, waker_vtable::()) } -unsafe fn wake_arc_raw(data: *const ()) { - let arc: Arc = Arc::from_raw(data.cast::()); +unsafe fn wake_arc_raw(data: *const ()) { + let arc: Arc = unsafe { Arc::from_raw(data.cast::()) }; ArcWake::wake(arc); } // used by `waker_ref` -unsafe fn wake_by_ref_arc_raw(data: *const ()) { +unsafe fn wake_by_ref_arc_raw(data: *const ()) { // Retain Arc, but don't touch refcount by wrapping in ManuallyDrop - let arc = mem::ManuallyDrop::new(Arc::::from_raw(data.cast::())); + let arc = mem::ManuallyDrop::new(unsafe { Arc::::from_raw(data.cast::()) }); ArcWake::wake_by_ref(&arc); } -unsafe fn drop_arc_raw(data: *const ()) { - drop(Arc::::from_raw(data.cast::())) +unsafe fn drop_arc_raw(data: *const ()) { + drop(unsafe { Arc::::from_raw(data.cast::()) }) } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/waker_ref.rs b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/waker_ref.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/waker_ref.rs rename to third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/waker_ref.rs index aac41095778a..5957b4d46afc 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/waker_ref.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/waker_ref.rs @@ -54,7 +54,7 @@ impl Deref for WakerRef<'_> { #[inline] pub fn waker_ref(wake: &Arc) -> WakerRef<'_> where - W: ArcWake, + W: ArcWake + 'static, { // simply copy the pointer instead of using Arc::into_raw, // as we don't actually keep a refcount by using ManuallyDrop.< diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/.cargo_vcs_info.json deleted file mode 100644 index 4791e9f22c4e..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/.cargo_vcs_info.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "git": { - "sha1": "cfc501c9c7ef53c531ed43533bb02845f65ff79e" - }, - "path_in_vcs": "futures-util" -} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/build.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/build.rs deleted file mode 100644 index 05e0496d94b5..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/build.rs +++ /dev/null @@ -1,41 +0,0 @@ -// The rustc-cfg listed below are considered public API, but it is *unstable* -// and outside of the normal semver guarantees: -// -// - `futures_no_atomic_cas` -// Assume the target does *not* support atomic CAS operations. -// This is usually detected automatically by the build script, but you may -// need to enable it manually when building for custom targets or using -// non-cargo build systems that don't run the build script. -// -// With the exceptions mentioned above, the rustc-cfg emitted by the build -// script are *not* public API. - -#![warn(rust_2018_idioms, single_use_lifetimes)] - -use std::env; - -include!("no_atomic_cas.rs"); - -fn main() { - let target = match env::var("TARGET") { - Ok(target) => target, - Err(e) => { - println!( - "cargo:warning={}: unable to get TARGET environment variable: {}", - env!("CARGO_PKG_NAME"), - e - ); - return; - } - }; - - // Note that this is `no_*`, not `has_*`. This allows treating - // `cfg(target_has_atomic = "ptr")` as true when the build script doesn't - // run. This is needed for compatibility with non-cargo build systems that - // don't run the build script. - if NO_ATOMIC_CAS.contains(&&*target) { - println!("cargo:rustc-cfg=futures_no_atomic_cas"); - } - - println!("cargo:rerun-if-changed=no_atomic_cas.rs"); -} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/no_atomic_cas.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/no_atomic_cas.rs deleted file mode 100644 index 16ec628cdfd6..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/no_atomic_cas.rs +++ /dev/null @@ -1,17 +0,0 @@ -// This file is @generated by no_atomic_cas.sh. -// It is not intended for manual editing. - -const NO_ATOMIC_CAS: &[&str] = &[ - "armv4t-none-eabi", - "armv5te-none-eabi", - "avr-unknown-gnu-atmega328", - "bpfeb-unknown-none", - "bpfel-unknown-none", - "msp430-none-elf", - "riscv32i-unknown-none-elf", - "riscv32im-unknown-none-elf", - "riscv32imc-unknown-none-elf", - "thumbv4t-none-eabi", - "thumbv5te-none-eabi", - "thumbv6m-none-eabi", -]; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_line.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_line.rs deleted file mode 100644 index e1b8fc945582..000000000000 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_line.rs +++ /dev/null @@ -1,57 +0,0 @@ -use super::read_until::read_until_internal; -use futures_core::future::Future; -use futures_core::ready; -use futures_core::task::{Context, Poll}; -use futures_io::AsyncBufRead; -use std::io; -use std::mem; -use std::pin::Pin; -use std::str; - -/// Future for the [`read_line`](super::AsyncBufReadExt::read_line) method. -#[derive(Debug)] -#[must_use = "futures do nothing unless you `.await` or poll them"] -pub struct ReadLine<'a, R: ?Sized> { - reader: &'a mut R, - buf: &'a mut String, - bytes: Vec, - read: usize, -} - -impl Unpin for ReadLine<'_, R> {} - -impl<'a, R: AsyncBufRead + ?Sized + Unpin> ReadLine<'a, R> { - pub(super) fn new(reader: &'a mut R, buf: &'a mut String) -> Self { - Self { reader, bytes: mem::take(buf).into_bytes(), buf, read: 0 } - } -} - -pub(super) fn read_line_internal( - reader: Pin<&mut R>, - cx: &mut Context<'_>, - buf: &mut String, - bytes: &mut Vec, - read: &mut usize, -) -> Poll> { - let ret = ready!(read_until_internal(reader, cx, b'\n', bytes, read)); - if str::from_utf8(bytes).is_err() { - Poll::Ready(ret.and_then(|_| { - Err(io::Error::new(io::ErrorKind::InvalidData, "stream did not contain valid UTF-8")) - })) - } else { - debug_assert!(buf.is_empty()); - debug_assert_eq!(*read, 0); - // Safety: `bytes` is a valid UTF-8 because `str::from_utf8` returned `Ok`. - mem::swap(unsafe { buf.as_mut_vec() }, bytes); - Poll::Ready(ret) - } -} - -impl Future for ReadLine<'_, R> { - type Output = io::Result; - - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let Self { reader, buf, bytes, read } = &mut *self; - read_line_internal(Pin::new(reader), cx, buf, bytes, read) - } -} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/.cargo-checksum.json b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/.cargo-checksum.json similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/.cargo-checksum.json rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/.cargo-checksum.json diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/.cargo_vcs_info.json b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/.cargo_vcs_info.json new file mode 100644 index 000000000000..181de1545d25 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "1e052816b09890925cfdfcbe8d390cdaae5e4c38" + }, + "path_in_vcs": "futures-util" +} \ No newline at end of file diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/Cargo.toml b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/Cargo.toml similarity index 75% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/Cargo.toml rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/Cargo.toml index 7b075d262ea8..754451f5ff24 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/Cargo.toml +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/Cargo.toml @@ -11,9 +11,14 @@ [package] edition = "2018" -rust-version = "1.45" +rust-version = "1.56" name = "futures-util" -version = "0.3.27" +version = "0.3.31" +build = false +autobins = false +autoexamples = false +autotests = false +autobenches = false description = """ Common utilities and extension traits for the futures-rs library. """ @@ -29,34 +34,54 @@ rustdoc-args = [ "docsrs", ] +[lib] +name = "futures_util" +path = "src/lib.rs" + +[[bench]] +name = "bilock" +path = "benches/bilock.rs" + +[[bench]] +name = "flatten_unordered" +path = "benches/flatten_unordered.rs" + +[[bench]] +name = "futures_unordered" +path = "benches/futures_unordered.rs" + +[[bench]] +name = "select" +path = "benches/select.rs" + [dependencies.futures-channel] -version = "0.3.27" +version = "0.3.31" features = ["std"] optional = true default-features = false [dependencies.futures-core] -version = "0.3.27" +version = "0.3.31" default-features = false [dependencies.futures-io] -version = "0.3.27" +version = "0.3.31" features = ["std"] optional = true default-features = false [dependencies.futures-macro] -version = "=0.3.27" +version = "=0.3.31" optional = true default-features = false [dependencies.futures-sink] -version = "0.3.27" +version = "0.3.31" optional = true default-features = false [dependencies.futures-task] -version = "0.3.27" +version = "0.3.31" default-features = false [dependencies.futures_01] @@ -133,3 +158,14 @@ unstable = [ "futures-task/unstable", ] write-all-vectored = ["io"] + +[lints.rust] +missing_debug_implementations = "warn" +rust_2018_idioms = "warn" +single_use_lifetimes = "warn" +unreachable_pub = "warn" + +[lints.rust.unexpected_cfgs] +level = "warn" +priority = 0 +check-cfg = ["cfg(futures_sanitizer)"] diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/Cargo.toml.orig b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/Cargo.toml.orig similarity index 80% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/Cargo.toml.orig rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/Cargo.toml.orig index ca05fe43a97e..825a204125ba 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/Cargo.toml.orig +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/Cargo.toml.orig @@ -1,8 +1,8 @@ [package] name = "futures-util" -version = "0.3.27" +version = "0.3.31" edition = "2018" -rust-version = "1.45" +rust-version = "1.56" license = "MIT OR Apache-2.0" repository = "https://github.com/rust-lang/futures-rs" homepage = "https://rust-lang.github.io/futures-rs" @@ -35,12 +35,12 @@ write-all-vectored = ["io"] cfg-target-has-atomic = [] [dependencies] -futures-core = { path = "../futures-core", version = "0.3.27", default-features = false } -futures-task = { path = "../futures-task", version = "0.3.27", default-features = false } -futures-channel = { path = "../futures-channel", version = "0.3.27", default-features = false, features = ["std"], optional = true } -futures-io = { path = "../futures-io", version = "0.3.27", default-features = false, features = ["std"], optional = true } -futures-sink = { path = "../futures-sink", version = "0.3.27", default-features = false, optional = true } -futures-macro = { path = "../futures-macro", version = "=0.3.27", default-features = false, optional = true } +futures-core = { path = "../futures-core", version = "0.3.31", default-features = false } +futures-task = { path = "../futures-task", version = "0.3.31", default-features = false } +futures-channel = { path = "../futures-channel", version = "0.3.31", default-features = false, features = ["std"], optional = true } +futures-io = { path = "../futures-io", version = "0.3.31", default-features = false, features = ["std"], optional = true } +futures-sink = { path = "../futures-sink", version = "0.3.31", default-features = false, optional = true } +futures-macro = { path = "../futures-macro", version = "=0.3.31", default-features = false, optional = true } slab = { version = "0.4.2", optional = true } memchr = { version = "2.2", optional = true } futures_01 = { version = "0.1.25", optional = true, package = "futures" } @@ -56,3 +56,6 @@ tokio = "0.1.11" [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] + +[lints] +workspace = true diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/LICENSE-APACHE b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/LICENSE-APACHE similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/LICENSE-APACHE rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/LICENSE-APACHE diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/LICENSE-MIT b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/LICENSE-MIT similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/LICENSE-MIT rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/LICENSE-MIT diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/README.md b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/README.md similarity index 90% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/README.md rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/README.md index 6e0aaed847c3..60e2c2109ad1 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/README.md +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/README.md @@ -11,7 +11,7 @@ Add this to your `Cargo.toml`: futures-util = "0.3" ``` -The current `futures-util` requires Rust 1.45 or later. +The current `futures-util` requires Rust 1.56 or later. ## License diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/benches/bilock.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/benches/bilock.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/benches/bilock.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/benches/bilock.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/benches/flatten_unordered.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/benches/flatten_unordered.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/benches/flatten_unordered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/benches/flatten_unordered.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/benches/futures_unordered.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/benches/futures_unordered.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/benches/futures_unordered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/benches/futures_unordered.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/benches/select.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/benches/select.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/benches/select.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/benches/select.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/abortable.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/abortable.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/abortable.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/abortable.rs index 9dbcfc2b52c6..e1e79e371db6 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/abortable.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/abortable.rs @@ -64,7 +64,7 @@ impl Abortable { /// This means that it will return `true` even if: /// * `abort` was called after the task had completed. /// * `abort` was called while the task was being polled - the task may still be running and - /// will not be stopped until `poll` returns. + /// will not be stopped until `poll` returns. pub fn is_aborted(&self) -> bool { self.inner.aborted.load(Ordering::Relaxed) } @@ -200,7 +200,7 @@ impl AbortHandle { /// even if: /// * `abort` was called after the task had completed. /// * `abort` was called while the task was being polled - the task may still be running and - /// will not be stopped until `poll` returns. + /// will not be stopped until `poll` returns. /// /// This operation has a Relaxed ordering. pub fn is_aborted(&self) -> bool { diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/join_mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/join_mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/join_mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/join_mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/mod.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/mod.rs index 7276da227aae..7e3f12c99fe5 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/mod.rs @@ -31,9 +31,11 @@ mod select_mod; pub use self::select_mod::*; // Primary export is a macro +#[cfg(feature = "std")] #[cfg(feature = "async-await-macro")] mod stream_select_mod; #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/64762 +#[cfg(feature = "std")] #[cfg(feature = "async-await-macro")] pub use self::stream_select_mod::*; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/pending.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/pending.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/pending.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/pending.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/poll.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/poll.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/poll.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/poll.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/random.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/random.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/random.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/random.rs index 4f8c7254b48c..2ac2f78a87dd 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/random.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/random.rs @@ -25,7 +25,7 @@ fn gen_index(n: usize) -> usize { /// /// [xorshift*]: https://en.wikipedia.org/wiki/Xorshift#xorshift* fn random() -> u64 { - thread_local! { + std::thread_local! { static RNG: Cell> = Cell::new(Wrapping(prng_seed())); } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/select_mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/select_mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/select_mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/select_mod.rs index 1d13067d38ab..80c3c7504a9c 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/select_mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/select_mod.rs @@ -3,6 +3,7 @@ macro_rules! document_select_macro { // This branch is required for `futures 0.3.1`, from before select_biased was introduced ($select:item) => { + #[allow(clippy::too_long_first_doc_paragraph)] /// Polls multiple futures and streams simultaneously, executing the branch /// for the future that finishes first. If multiple futures are ready, /// one will be pseudo-randomly selected at runtime. Futures directly @@ -153,6 +154,7 @@ macro_rules! document_select_macro { ($select:item $select_biased:item) => { document_select_macro!($select); + #[allow(clippy::too_long_first_doc_paragraph)] /// Polls multiple futures and streams simultaneously, executing the branch /// for the future that finishes first. Unlike [`select!`], if multiple futures are ready, /// one will be selected in order of declaration. Futures directly diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/stream_select_mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/stream_select_mod.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/stream_select_mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/stream_select_mod.rs index 1c8002fff355..c3e4f0052c38 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/stream_select_mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/stream_select_mod.rs @@ -1,10 +1,10 @@ //! The `stream_select` macro. -#[cfg(feature = "std")] #[allow(unreachable_pub)] #[doc(hidden)] pub use futures_macro::stream_select_internal; +#[allow(clippy::too_long_first_doc_paragraph)] /// Combines several streams, all producing the same `Item` type, into one stream. /// This is similar to `select_all` but does not require the streams to all be the same type. /// It also keeps the streams inline, and does not require `Box`s to be allocated. @@ -28,7 +28,6 @@ pub use futures_macro::stream_select_internal; /// } /// # }); /// ``` -#[cfg(feature = "std")] #[macro_export] macro_rules! stream_select { ($($tokens:tt)*) => {{ diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/compat01as03.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/compat01as03.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/compat01as03.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/compat01as03.rs index 36de1da98dc8..0de2d53301f3 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/compat01as03.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/compat01as03.rs @@ -8,6 +8,7 @@ use futures_01::{AsyncSink as AsyncSink01, Sink as Sink01}; use futures_core::{future::Future as Future03, stream::Stream as Stream03, task as task03}; #[cfg(feature = "sink")] use futures_sink::Sink as Sink03; +use std::boxed::Box; use std::pin::Pin; use std::task::Context; @@ -346,7 +347,7 @@ unsafe impl UnsafeNotify01 for NotifyWaker { unsafe fn drop_raw(&self) { let ptr: *const dyn UnsafeNotify01 = self; - drop(Box::from_raw(ptr as *mut dyn UnsafeNotify01)); + drop(unsafe { Box::from_raw(ptr as *mut dyn UnsafeNotify01) }); } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/compat03as01.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/compat03as01.rs similarity index 95% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/compat03as01.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/compat03as01.rs index 5d3a6e920b6f..3c5bb77b49c9 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/compat03as01.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/compat03as01.rs @@ -15,6 +15,7 @@ use futures_sink::Sink as Sink03; use std::marker::PhantomData; use std::{mem, pin::Pin, sync::Arc, task::Context}; +#[allow(clippy::too_long_first_doc_paragraph)] // clippy bug, see https://github.com/rust-lang/rust-clippy/issues/13315 /// Converts a futures 0.3 [`TryFuture`](futures_core::future::TryFuture) or /// [`TryStream`](futures_core::stream::TryStream) into a futures 0.1 /// [`Future`](futures_01::future::Future) or @@ -156,7 +157,7 @@ impl Current { fn as_waker(&self) -> WakerRef<'_> { unsafe fn ptr_to_current<'a>(ptr: *const ()) -> &'a Current { - &*(ptr as *const Current) + unsafe { &*(ptr as *const Current) } } fn current_to_ptr(current: &Current) -> *const () { current as *const Current as *const () @@ -166,13 +167,15 @@ impl Current { // Lazily create the `Arc` only when the waker is actually cloned. // FIXME: remove `transmute` when a `Waker` -> `RawWaker` conversion // function is landed in `core`. - mem::transmute::(task03::waker(Arc::new( - ptr_to_current(ptr).clone(), - ))) + unsafe { + mem::transmute::(task03::waker(Arc::new( + ptr_to_current(ptr).clone(), + ))) + } } unsafe fn drop(_: *const ()) {} unsafe fn wake(ptr: *const ()) { - ptr_to_current(ptr).0.notify() + unsafe { ptr_to_current(ptr).0.notify() } } let ptr = current_to_ptr(self); diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/executor.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/executor.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/executor.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/executor.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/fns.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/fns.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/fns.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/fns.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/abortable.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/abortable.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/abortable.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/abortable.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/always_ready.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/always_ready.rs new file mode 100644 index 000000000000..28625e727295 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/always_ready.rs @@ -0,0 +1,62 @@ +use super::assert_future; +use core::pin::Pin; +use futures_core::future::{FusedFuture, Future}; +use futures_core::task::{Context, Poll}; + +/// Future for the [`always_ready`](always_ready()) function. +#[must_use = "futures do nothing unless you `.await` or poll them"] +pub struct AlwaysReady T>(F); + +impl T> core::fmt::Debug for AlwaysReady { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_tuple("AlwaysReady").finish() + } +} + +impl T + Clone> Clone for AlwaysReady { + fn clone(&self) -> Self { + Self(self.0.clone()) + } +} + +impl T + Copy> Copy for AlwaysReady {} + +impl T> Unpin for AlwaysReady {} + +impl T> FusedFuture for AlwaysReady { + fn is_terminated(&self) -> bool { + false + } +} + +impl T> Future for AlwaysReady { + type Output = T; + + #[inline] + fn poll(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll { + Poll::Ready(self.0()) + } +} + +/// Creates a future that is always immediately ready with a value. +/// +/// This is particularly useful in avoiding a heap allocation when an API needs [`Box>`], +/// as [`AlwaysReady`] does not have to store a boolean for `is_finished`. +/// +/// # Examples +/// +/// ``` +/// # futures::executor::block_on(async { +/// use std::mem::size_of_val; +/// +/// use futures::future; +/// +/// let a = future::always_ready(|| 1); +/// assert_eq!(size_of_val(&a), 0); +/// assert_eq!(a.await, 1); +/// assert_eq!(a.await, 1); +/// # }); +/// ``` +pub fn always_ready T>(prod: F) -> AlwaysReady { + assert_future::(AlwaysReady(prod)) +} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/either.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/either.rs similarity index 88% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/either.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/either.rs index 27e5064dfb73..018e51e72fdc 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/either.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/either.rs @@ -39,9 +39,9 @@ impl Either { // SAFETY: We can use `new_unchecked` because the `inner` parts are // guaranteed to be pinned, as they come from `self` which is pinned. unsafe { - match *Pin::get_ref(self) { - Either::Left(ref inner) => Either::Left(Pin::new_unchecked(inner)), - Either::Right(ref inner) => Either::Right(Pin::new_unchecked(inner)), + match self.get_ref() { + Self::Left(inner) => Either::Left(Pin::new_unchecked(inner)), + Self::Right(inner) => Either::Right(Pin::new_unchecked(inner)), } } } @@ -55,9 +55,9 @@ impl Either { // offer an unpinned `&mut A` or `&mut B` through `Pin<&mut Self>`. We // also don't have an implementation of `Drop`, nor manual `Unpin`. unsafe { - match *Pin::get_unchecked_mut(self) { - Either::Left(ref mut inner) => Either::Left(Pin::new_unchecked(inner)), - Either::Right(ref mut inner) => Either::Right(Pin::new_unchecked(inner)), + match self.get_unchecked_mut() { + Self::Left(inner) => Either::Left(Pin::new_unchecked(inner)), + Self::Right(inner) => Either::Right(Pin::new_unchecked(inner)), } } } @@ -69,8 +69,8 @@ impl Either<(T, A), (T, B)> { /// Here, the homogeneous type is the first element of the pairs. pub fn factor_first(self) -> (T, Either) { match self { - Either::Left((x, a)) => (x, Either::Left(a)), - Either::Right((x, b)) => (x, Either::Right(b)), + Self::Left((x, a)) => (x, Either::Left(a)), + Self::Right((x, b)) => (x, Either::Right(b)), } } } @@ -81,8 +81,8 @@ impl Either<(A, T), (B, T)> { /// Here, the homogeneous type is the second element of the pairs. pub fn factor_second(self) -> (Either, T) { match self { - Either::Left((a, x)) => (Either::Left(a), x), - Either::Right((b, x)) => (Either::Right(b), x), + Self::Left((a, x)) => (Either::Left(a), x), + Self::Right((b, x)) => (Either::Right(b), x), } } } @@ -91,8 +91,7 @@ impl Either { /// Extract the value of an either over two equivalent types. pub fn into_inner(self) -> T { match self { - Either::Left(x) => x, - Either::Right(x) => x, + Self::Left(x) | Self::Right(x) => x, } } } @@ -119,8 +118,8 @@ where { fn is_terminated(&self) -> bool { match self { - Either::Left(x) => x.is_terminated(), - Either::Right(x) => x.is_terminated(), + Self::Left(x) => x.is_terminated(), + Self::Right(x) => x.is_terminated(), } } } @@ -141,8 +140,8 @@ where fn size_hint(&self) -> (usize, Option) { match self { - Either::Left(x) => x.size_hint(), - Either::Right(x) => x.size_hint(), + Self::Left(x) => x.size_hint(), + Self::Right(x) => x.size_hint(), } } } @@ -154,8 +153,8 @@ where { fn is_terminated(&self) -> bool { match self { - Either::Left(x) => x.is_terminated(), - Either::Right(x) => x.is_terminated(), + Self::Left(x) => x.is_terminated(), + Self::Right(x) => x.is_terminated(), } } } @@ -202,8 +201,6 @@ where mod if_std { use super::*; - use core::pin::Pin; - use core::task::{Context, Poll}; use futures_io::{ AsyncBufRead, AsyncRead, AsyncSeek, AsyncWrite, IoSlice, IoSliceMut, Result, SeekFrom, }; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/catch_unwind.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/catch_unwind.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/catch_unwind.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/catch_unwind.rs index 0e09d6eeb0f5..ed49e314d2c8 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/catch_unwind.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/catch_unwind.rs @@ -1,5 +1,6 @@ use core::any::Any; use core::pin::Pin; +use std::boxed::Box; use std::panic::{catch_unwind, AssertUnwindSafe, UnwindSafe}; use futures_core::future::Future; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/flatten.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/flatten.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/flatten.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/flatten.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/fuse.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/fuse.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/fuse.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/fuse.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/map.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/map.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/map.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/map.rs index 7471aba00071..6991a3502282 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/map.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/map.rs @@ -53,7 +53,7 @@ where match self.as_mut().project() { MapProj::Incomplete { future, .. } => { let output = ready!(future.poll(cx)); - match self.project_replace(Map::Complete) { + match self.project_replace(Self::Complete) { MapProjReplace::Incomplete { f, .. } => Poll::Ready(f.call_once(output)), MapProjReplace::Complete => unreachable!(), } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/mod.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/mod.rs index c11d108207ea..955af3776a4d 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/mod.rs @@ -463,10 +463,6 @@ pub trait FutureExt: Future { /// ``` /// /// ``` - /// // Note, unlike most examples this is written in the context of a - /// // synchronous function to better illustrate the cross-thread aspect of - /// // the `shared` combinator. - /// /// # futures::executor::block_on(async { /// use futures::future::FutureExt; /// use futures::executor::block_on; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/remote_handle.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/remote_handle.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/remote_handle.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/remote_handle.rs index 1358902cabf4..6c4b7698ae26 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/remote_handle.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/remote_handle.rs @@ -9,6 +9,7 @@ use { pin_project_lite::pin_project, std::{ any::Any, + boxed::Box, fmt, panic::{self, AssertUnwindSafe}, pin::Pin, diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/shared.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/shared.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/shared.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/shared.rs index ecd1b426dbbe..158fa70761b7 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/shared.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/shared.rs @@ -37,10 +37,6 @@ impl Clone for WeakShared { } } -// The future itself is polled behind the `Arc`, so it won't be moved -// when `Shared` is moved. -impl Unpin for Shared {} - impl fmt::Debug for Shared { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("Shared") @@ -86,7 +82,7 @@ const POLLING: usize = 1; const COMPLETE: usize = 2; const POISONED: usize = 3; -const NULL_WAKER_KEY: usize = usize::max_value(); +const NULL_WAKER_KEY: usize = usize::MAX; impl Shared { pub(super) fn new(future: Fut) -> Self { @@ -196,8 +192,8 @@ where /// Safety: callers must first ensure that `self.inner.state` /// is `COMPLETE` unsafe fn output(&self) -> &Fut::Output { - match &*self.future_or_output.get() { - FutureOrOutput::Output(ref item) => item, + match unsafe { &*self.future_or_output.get() } { + FutureOrOutput::Output(item) => item, FutureOrOutput::Future(_) => unreachable!(), } } @@ -239,7 +235,7 @@ where FutureOrOutput::Output(item) => item, FutureOrOutput::Future(_) => unreachable!(), }, - Err(inner) => inner.output().clone(), + Err(inner) => unsafe { inner.output().clone() }, } } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/join.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/join.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/join.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/join.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/join_all.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/join_all.rs similarity index 88% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/join_all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/join_all.rs index 7dc159ba07b7..79eee8dffc1b 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/join_all.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/join_all.rs @@ -12,7 +12,7 @@ use core::task::{Context, Poll}; use super::{assert_future, MaybeDone}; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] use crate::stream::{Collect, FuturesOrdered, StreamExt}; pub(crate) fn iter_pin_mut(slice: Pin<&mut [T]>) -> impl Iterator> { @@ -31,7 +31,7 @@ where kind: JoinAllKind, } -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] pub(crate) const SMALL: usize = 30; enum JoinAllKind @@ -41,7 +41,7 @@ where Small { elems: Pin]>>, }, - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] Big { fut: Collect, Vec>, }, @@ -57,7 +57,7 @@ where JoinAllKind::Small { ref elems } => { f.debug_struct("JoinAll").field("elems", elems).finish() } - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] JoinAllKind::Big { ref fut, .. } => fmt::Debug::fmt(fut, f), } } @@ -77,7 +77,7 @@ where /// /// `join_all` will switch to the more powerful [`FuturesOrdered`] for performance /// reasons if the number of futures is large. You may want to look into using it or -/// it's counterpart [`FuturesUnordered`][crate::stream::FuturesUnordered] directly. +/// its counterpart [`FuturesUnordered`][crate::stream::FuturesUnordered] directly. /// /// Some examples for additional functionality provided by these are: /// @@ -106,7 +106,8 @@ where { let iter = iter.into_iter(); - #[cfg(futures_no_atomic_cas)] + #[cfg(target_os = "none")] + #[cfg_attr(target_os = "none", cfg(not(target_has_atomic = "ptr")))] { let kind = JoinAllKind::Small { elems: iter.map(MaybeDone::Future).collect::>().into() }; @@ -114,7 +115,7 @@ where assert_future::::Output>, _>(JoinAll { kind }) } - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] { let kind = match iter.size_hint().1 { Some(max) if max <= SMALL => JoinAllKind::Small { @@ -153,7 +154,7 @@ where Poll::Pending } } - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] JoinAllKind::Big { fut } => Pin::new(fut).poll(cx), } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/lazy.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/lazy.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/lazy.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/lazy.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/maybe_done.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/maybe_done.rs similarity index 91% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/maybe_done.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/maybe_done.rs index 26e6c2758810..1e21e66f5e3b 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/maybe_done.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/maybe_done.rs @@ -53,7 +53,7 @@ impl MaybeDone { pub fn output_mut(self: Pin<&mut Self>) -> Option<&mut Fut::Output> { unsafe { match self.get_unchecked_mut() { - MaybeDone::Done(res) => Some(res), + Self::Done(res) => Some(res), _ => None, } } @@ -69,7 +69,7 @@ impl MaybeDone { } unsafe { match mem::replace(self.get_unchecked_mut(), Self::Gone) { - MaybeDone::Done(output) => Some(output), + Self::Done(output) => Some(output), _ => unreachable!(), } } @@ -91,12 +91,12 @@ impl Future for MaybeDone { fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { unsafe { match self.as_mut().get_unchecked_mut() { - MaybeDone::Future(f) => { + Self::Future(f) => { let res = ready!(Pin::new_unchecked(f).poll(cx)); self.set(Self::Done(res)); } - MaybeDone::Done(_) => {} - MaybeDone::Gone => panic!("MaybeDone polled after value taken"), + Self::Done(_) => {} + Self::Gone => panic!("MaybeDone polled after value taken"), } } Poll::Ready(()) diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/mod.rs similarity index 92% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/mod.rs index 374e36512f8d..873d2b2d1061 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/mod.rs @@ -74,6 +74,9 @@ pub use self::poll_immediate::{poll_immediate, PollImmediate}; mod ready; pub use self::ready::{err, ok, ready, Ready}; +mod always_ready; +pub use self::always_ready::{always_ready, AlwaysReady}; + mod join; pub use self::join::{join, join3, join4, join5, Join, Join3, Join4, Join5}; @@ -111,13 +114,13 @@ pub use self::select_ok::{select_ok, SelectOk}; mod either; pub use self::either::Either; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod abortable; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use crate::abortable::{AbortHandle, AbortRegistration, Abortable, Aborted}; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use abortable::abortable; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/option.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/option.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/option.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/option.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/pending.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/pending.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/pending.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/pending.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/poll_fn.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/poll_fn.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/poll_fn.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/poll_fn.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/poll_immediate.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/poll_immediate.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/poll_immediate.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/poll_immediate.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/ready.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/ready.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/ready.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/ready.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/select.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/select.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/select.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/select.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/select_all.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/select_all.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/select_all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/select_all.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/select_ok.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/select_ok.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/select_ok.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/select_ok.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/into_future.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/into_future.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/into_future.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/into_future.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/try_flatten.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/try_flatten.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/try_flatten.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/try_flatten.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/try_flatten_err.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/try_flatten_err.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/try_flatten_err.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/try_flatten_err.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_join.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_join.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_join.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_join.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_join_all.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_join_all.rs similarity index 92% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_join_all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_join_all.rs index 506f450657ce..2d6a2a02cb62 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_join_all.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_join_all.rs @@ -12,7 +12,7 @@ use core::task::{Context, Poll}; use super::{assert_future, join_all, IntoFuture, TryFuture, TryMaybeDone}; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] use crate::stream::{FuturesOrdered, TryCollect, TryStreamExt}; use crate::TryFutureExt; @@ -38,7 +38,7 @@ where Small { elems: Pin>]>>, }, - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] Big { fut: TryCollect>, Vec>, }, @@ -56,7 +56,7 @@ where TryJoinAllKind::Small { ref elems } => { f.debug_struct("TryJoinAll").field("elems", elems).finish() } - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] TryJoinAllKind::Big { ref fut, .. } => fmt::Debug::fmt(fut, f), } } @@ -121,7 +121,8 @@ where { let iter = iter.into_iter().map(TryFutureExt::into_future); - #[cfg(futures_no_atomic_cas)] + #[cfg(target_os = "none")] + #[cfg_attr(target_os = "none", cfg(not(target_has_atomic = "ptr")))] { let kind = TryJoinAllKind::Small { elems: iter.map(TryMaybeDone::Future).collect::>().into(), @@ -132,7 +133,7 @@ where ) } - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] { let kind = match iter.size_hint().1 { Some(max) if max <= join_all::SMALL => TryJoinAllKind::Small { @@ -184,7 +185,7 @@ where } } } - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] TryJoinAllKind::Big { fut } => Pin::new(fut).poll(cx), } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_maybe_done.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_maybe_done.rs similarity index 89% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_maybe_done.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_maybe_done.rs index 24044d2c2763..97af6ad437a8 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_maybe_done.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_maybe_done.rs @@ -38,7 +38,7 @@ impl TryMaybeDone { pub fn output_mut(self: Pin<&mut Self>) -> Option<&mut Fut::Ok> { unsafe { match self.get_unchecked_mut() { - TryMaybeDone::Done(res) => Some(res), + Self::Done(res) => Some(res), _ => None, } } @@ -54,7 +54,7 @@ impl TryMaybeDone { } unsafe { match mem::replace(self.get_unchecked_mut(), Self::Gone) { - TryMaybeDone::Done(output) => Some(output), + Self::Done(output) => Some(output), _ => unreachable!(), } } @@ -76,15 +76,15 @@ impl Future for TryMaybeDone { fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { unsafe { match self.as_mut().get_unchecked_mut() { - TryMaybeDone::Future(f) => match ready!(Pin::new_unchecked(f).try_poll(cx)) { + Self::Future(f) => match ready!(Pin::new_unchecked(f).try_poll(cx)) { Ok(res) => self.set(Self::Done(res)), Err(e) => { self.set(Self::Gone); return Poll::Ready(Err(e)); } }, - TryMaybeDone::Done(_) => {} - TryMaybeDone::Gone => panic!("TryMaybeDone polled after value taken"), + Self::Done(_) => {} + Self::Gone => panic!("TryMaybeDone polled after value taken"), } } Poll::Ready(Ok(())) diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_select.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_select.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_select.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_select.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/allow_std.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/allow_std.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/allow_std.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/allow_std.rs index ec30ee31e598..96133cbc6f1a 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/allow_std.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/allow_std.rs @@ -1,6 +1,8 @@ use futures_core::task::{Context, Poll}; use futures_io::{AsyncBufRead, AsyncRead, AsyncSeek, AsyncWrite, IoSlice, IoSliceMut, SeekFrom}; use std::pin::Pin; +use std::string::String; +use std::vec::Vec; use std::{fmt, io}; /// A simple wrapper type which allows types which implement only diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/buf_reader.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/buf_reader.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/buf_reader.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/buf_reader.rs index 0334a9f0815f..9a919f7183f7 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/buf_reader.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/buf_reader.rs @@ -4,8 +4,10 @@ use futures_core::ready; use futures_core::task::{Context, Poll}; use futures_io::{AsyncBufRead, AsyncRead, AsyncSeek, AsyncWrite, IoSliceMut, SeekFrom}; use pin_project_lite::pin_project; +use std::boxed::Box; use std::io::{self, Read}; use std::pin::Pin; +use std::vec; use std::{cmp, fmt}; pin_project! { @@ -46,14 +48,13 @@ impl BufReader { /// Creates a new `BufReader` with the specified buffer capacity. pub fn with_capacity(capacity: usize, inner: R) -> Self { - unsafe { - let mut buffer = Vec::with_capacity(capacity); - buffer.set_len(capacity); - super::initialize(&inner, &mut buffer); - Self { inner, buffer: buffer.into_boxed_slice(), pos: 0, cap: 0 } - } + // TODO: consider using Box<[u8]>::new_uninit_slice once it stabilized + let buffer = vec![0; capacity]; + Self { inner, buffer: buffer.into_boxed_slice(), pos: 0, cap: 0 } } +} +impl BufReader { delegate_access_inner!(inner, R, ()); /// Returns a reference to the internally buffered data. @@ -212,7 +213,7 @@ impl AsyncSeek for BufReader { // it should be safe to assume that remainder fits within an i64 as the alternative // means we managed to allocate 8 exbibytes and that's absurd. // But it's not out of the realm of possibility for some weird underlying reader to - // support seeking by i64::min_value() so we need to handle underflow when subtracting + // support seeking by i64::MIN so we need to handle underflow when subtracting // remainder. if let Some(offset) = n.checked_sub(remainder) { result = diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/buf_writer.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/buf_writer.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/buf_writer.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/buf_writer.rs index cb74863ad0d0..ddcf5e1b4db6 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/buf_writer.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/buf_writer.rs @@ -7,6 +7,7 @@ use std::fmt; use std::io::{self, Write}; use std::pin::Pin; use std::ptr; +use std::vec::Vec; pin_project! { /// Wraps a writer and buffers its output. @@ -78,6 +79,26 @@ impl BufWriter { Poll::Ready(ret) } + /// Write directly using `inner`, bypassing buffering + pub(super) fn inner_poll_write( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + buf: &[u8], + ) -> Poll> { + self.project().inner.poll_write(cx, buf) + } + + /// Write directly using `inner`, bypassing buffering + pub(super) fn inner_poll_write_vectored( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + bufs: &[IoSlice<'_>], + ) -> Poll> { + self.project().inner.poll_write_vectored(cx, bufs) + } +} + +impl BufWriter { delegate_access_inner!(inner, W, ()); /// Returns a reference to the internally buffered data. @@ -124,27 +145,11 @@ impl BufWriter { let old_len = this.buf.len(); let buf_len = buf.len(); let src = buf.as_ptr(); - let dst = this.buf.as_mut_ptr().add(old_len); - ptr::copy_nonoverlapping(src, dst, buf_len); - this.buf.set_len(old_len + buf_len); - } - - /// Write directly using `inner`, bypassing buffering - pub(super) fn inner_poll_write( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &[u8], - ) -> Poll> { - self.project().inner.poll_write(cx, buf) - } - - /// Write directly using `inner`, bypassing buffering - pub(super) fn inner_poll_write_vectored( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - bufs: &[IoSlice<'_>], - ) -> Poll> { - self.project().inner.poll_write_vectored(cx, bufs) + unsafe { + let dst = this.buf.as_mut_ptr().add(old_len); + ptr::copy_nonoverlapping(src, dst, buf_len); + this.buf.set_len(old_len + buf_len); + } } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/chain.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/chain.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/chain.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/chain.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/close.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/close.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/close.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/close.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/copy.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/copy.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/copy.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/copy.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/copy_buf.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/copy_buf.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/copy_buf.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/copy_buf.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/copy_buf_abortable.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/copy_buf_abortable.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/copy_buf_abortable.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/copy_buf_abortable.rs index fdbc4a5f00e5..ed22d6233886 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/copy_buf_abortable.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/copy_buf_abortable.rs @@ -57,7 +57,7 @@ where } pin_project! { - /// Future for the [`copy_buf()`] function. + /// Future for the [`copy_buf_abortable()`] function. #[derive(Debug)] #[must_use = "futures do nothing unless you `.await` or poll them"] pub struct CopyBufAbortable<'a, R, W: ?Sized> { diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/cursor.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/cursor.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/cursor.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/cursor.rs index c6e2aeea2873..01c8e5f4dc0f 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/cursor.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/cursor.rs @@ -1,7 +1,9 @@ use futures_core::task::{Context, Poll}; use futures_io::{AsyncBufRead, AsyncRead, AsyncSeek, AsyncWrite, IoSlice, IoSliceMut, SeekFrom}; +use std::boxed::Box; use std::io; use std::pin::Pin; +use std::vec::Vec; /// A `Cursor` wraps an in-memory buffer and provides it with a /// [`AsyncSeek`] implementation. diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/empty.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/empty.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/empty.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/empty.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/fill_buf.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/fill_buf.rs similarity index 64% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/fill_buf.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/fill_buf.rs index a1484c03226a..45862b8e29e5 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/fill_buf.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/fill_buf.rs @@ -3,6 +3,7 @@ use futures_core::task::{Context, Poll}; use futures_io::AsyncBufRead; use std::io; use std::pin::Pin; +use std::slice; /// Future for the [`fill_buf`](super::AsyncBufReadExt::fill_buf) method. #[derive(Debug)] @@ -30,17 +31,12 @@ where let reader = this.reader.take().expect("Polled FillBuf after completion"); match Pin::new(&mut *reader).poll_fill_buf(cx) { - // With polonius it is possible to remove this inner match and just have the correct - // lifetime of the reference inferred based on which branch is taken - Poll::Ready(Ok(_)) => match Pin::new(reader).poll_fill_buf(cx) { - Poll::Ready(Ok(slice)) => Poll::Ready(Ok(slice)), - Poll::Ready(Err(err)) => { - unreachable!("reader indicated readiness but then returned an error: {:?}", err) - } - Poll::Pending => { - unreachable!("reader indicated readiness but then returned pending") - } - }, + Poll::Ready(Ok(slice)) => { + // With polonius it is possible to remove this lifetime transmutation and just have + // the correct lifetime of the reference inferred based on which branch is taken + let slice: &'a [u8] = unsafe { slice::from_raw_parts(slice.as_ptr(), slice.len()) }; + Poll::Ready(Ok(slice)) + } Poll::Ready(Err(err)) => Poll::Ready(Err(err)), Poll::Pending => { this.reader = Some(reader); diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/flush.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/flush.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/flush.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/flush.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/into_sink.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/into_sink.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/into_sink.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/into_sink.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/line_writer.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/line_writer.rs similarity index 95% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/line_writer.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/line_writer.rs index 71cd6683255b..de1bb539248f 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/line_writer.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/line_writer.rs @@ -25,13 +25,13 @@ pub struct LineWriter { impl LineWriter { /// Create a new `LineWriter` with default buffer capacity. The default is currently 1KB /// which was taken from `std::io::LineWriter` - pub fn new(inner: W) -> LineWriter { - LineWriter::with_capacity(1024, inner) + pub fn new(inner: W) -> Self { + Self::with_capacity(1024, inner) } /// Creates a new `LineWriter` with the specified buffer capacity. - pub fn with_capacity(capacity: usize, inner: W) -> LineWriter { - LineWriter { buf_writer: BufWriter::with_capacity(capacity, inner) } + pub fn with_capacity(capacity: usize, inner: W) -> Self { + Self { buf_writer: BufWriter::with_capacity(capacity, inner) } } /// Flush `buf_writer` if last char is "new line" diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/lines.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/lines.rs similarity index 95% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/lines.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/lines.rs index b5561bfa7d09..0a1abf4bf635 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/lines.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/lines.rs @@ -7,6 +7,8 @@ use pin_project_lite::pin_project; use std::io; use std::mem; use std::pin::Pin; +use std::string::String; +use std::vec::Vec; pin_project! { /// Stream for the [`lines`](super::AsyncBufReadExt::lines) method. @@ -33,6 +35,7 @@ impl Stream for Lines { fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { let this = self.project(); let n = ready!(read_line_internal(this.reader, cx, this.buf, this.bytes, this.read))?; + *this.read = 0; if n == 0 && this.buf.is_empty() { return Poll::Ready(None); } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/mod.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/mod.rs index 8ce3ad644b3c..c07fe3fe479b 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/mod.rs @@ -21,7 +21,7 @@ use crate::compat::Compat; use crate::future::assert_future; use crate::stream::assert_stream; -use std::{pin::Pin, ptr}; +use std::{pin::Pin, ptr, string::String, vec::Vec}; // Re-export some types from `std::io` so that users don't have to deal // with conflicts when `use`ing `futures::io` and `std::io`. @@ -39,7 +39,7 @@ const DEFAULT_BUF_SIZE: usize = 8 * 1024; /// A buffer is currently always initialized. #[inline] unsafe fn initialize(_reader: &R, buf: &mut [u8]) { - ptr::write_bytes(buf.as_mut_ptr(), 0, buf.len()) + unsafe { ptr::write_bytes(buf.as_mut_ptr(), 0, buf.len()) } } mod allow_std; @@ -804,11 +804,11 @@ pub trait AsyncBufReadExt: AsyncBufRead { /// use futures::io::{AsyncBufReadExt, Cursor}; /// use futures::stream::StreamExt; /// - /// let cursor = Cursor::new(b"lorem\nipsum\r\ndolor"); + /// let cursor = Cursor::new(b"lorem\nipsum\xc2\r\ndolor"); /// - /// let mut lines_stream = cursor.lines().map(|l| l.unwrap()); + /// let mut lines_stream = cursor.lines().map(|l| l.unwrap_or(String::from("invalid UTF_8"))); /// assert_eq!(lines_stream.next().await, Some(String::from("lorem"))); - /// assert_eq!(lines_stream.next().await, Some(String::from("ipsum"))); + /// assert_eq!(lines_stream.next().await, Some(String::from("invalid UTF_8"))); /// assert_eq!(lines_stream.next().await, Some(String::from("dolor"))); /// assert_eq!(lines_stream.next().await, None); /// # Ok::<(), Box>(()) }).unwrap(); diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_exact.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_exact.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_exact.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_exact.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_line.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_line.rs new file mode 100644 index 000000000000..43942add5442 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_line.rs @@ -0,0 +1,77 @@ +use super::read_until::read_until_internal; +use futures_core::future::Future; +use futures_core::ready; +use futures_core::task::{Context, Poll}; +use futures_io::AsyncBufRead; +use std::io; +use std::mem; +use std::pin::Pin; +use std::str; +use std::string::String; +use std::vec::Vec; + +/// Future for the [`read_line`](super::AsyncBufReadExt::read_line) method. +#[derive(Debug)] +#[must_use = "futures do nothing unless you `.await` or poll them"] +pub struct ReadLine<'a, R: ?Sized> { + reader: &'a mut R, + buf: &'a mut String, + bytes: Vec, + read: usize, + finished: bool, +} + +impl Unpin for ReadLine<'_, R> {} + +impl<'a, R: AsyncBufRead + ?Sized + Unpin> ReadLine<'a, R> { + pub(super) fn new(reader: &'a mut R, buf: &'a mut String) -> Self { + Self { reader, bytes: mem::take(buf).into_bytes(), buf, read: 0, finished: false } + } +} + +pub(super) fn read_line_internal( + reader: Pin<&mut R>, + cx: &mut Context<'_>, + buf: &mut String, + bytes: &mut Vec, + read: &mut usize, +) -> Poll> { + let mut ret = ready!(read_until_internal(reader, cx, b'\n', bytes, read)); + if str::from_utf8(&bytes[bytes.len() - *read..bytes.len()]).is_err() { + bytes.truncate(bytes.len() - *read); + if ret.is_ok() { + ret = Err(io::Error::new( + io::ErrorKind::InvalidData, + "stream did not contain valid UTF-8", + )); + } + } + *read = 0; + // Safety: `bytes` is valid UTF-8 because it was taken from a String + // and the newly read bytes are either valid UTF-8 or have been removed. + mem::swap(unsafe { buf.as_mut_vec() }, bytes); + Poll::Ready(ret) +} + +impl Future for ReadLine<'_, R> { + type Output = io::Result; + + fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + let Self { reader, buf, bytes, read, finished: _ } = &mut *self; + let ret = ready!(read_line_internal(Pin::new(reader), cx, buf, bytes, read)); + self.finished = true; + Poll::Ready(ret) + } +} + +impl Drop for ReadLine<'_, R> { + fn drop(&mut self) { + // restore old string contents + if !self.finished { + self.bytes.truncate(self.bytes.len() - self.read); + // Safety: `bytes` is valid UTF-8 because it was taken from a String + // and the newly read bytes have been removed. + mem::swap(unsafe { self.buf.as_mut_vec() }, &mut self.bytes); + } + } +} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_to_end.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_to_end.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_to_end.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_to_end.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_to_string.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_to_string.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_to_string.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_to_string.rs index c175396d81cb..a075ca2662bc 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_to_string.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_to_string.rs @@ -4,6 +4,7 @@ use futures_core::ready; use futures_core::task::{Context, Poll}; use futures_io::AsyncRead; use std::pin::Pin; +use std::string::String; use std::vec::Vec; use std::{io, mem, str}; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_until.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_until.rs similarity index 95% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_until.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_until.rs index 72b59eab1365..adc359db51f3 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_until.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_until.rs @@ -3,8 +3,8 @@ use futures_core::ready; use futures_core::task::{Context, Poll}; use futures_io::AsyncBufRead; use std::io; -use std::mem; use std::pin::Pin; +use std::vec::Vec; /// Future for the [`read_until`](super::AsyncBufReadExt::read_until) method. #[derive(Debug)] @@ -45,7 +45,7 @@ pub(super) fn read_until_internal( reader.as_mut().consume(used); *read += used; if done || used == 0 { - return Poll::Ready(Ok(mem::replace(read, 0))); + return Poll::Ready(Ok(*read)); } } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_vectored.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_vectored.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_vectored.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_vectored.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/repeat.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/repeat.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/repeat.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/repeat.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/seek.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/seek.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/seek.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/seek.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/sink.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/sink.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/sink.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/sink.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/split.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/split.rs similarity index 87% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/split.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/split.rs index 3f1b9af45685..5b6bc1893740 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/split.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/split.rs @@ -31,6 +31,13 @@ pub(super) fn split(t: T) -> (ReadHalf, WriteHalf< (ReadHalf { handle: a }, WriteHalf { handle: b }) } +impl ReadHalf { + /// Checks if this `ReadHalf` and some `WriteHalf` were split from the same stream. + pub fn is_pair_of(&self, other: &WriteHalf) -> bool { + self.handle.is_pair_of(&other.handle) + } +} + impl ReadHalf { /// Attempts to put the two "halves" of a split `AsyncRead + AsyncWrite` back /// together. Succeeds only if the `ReadHalf` and `WriteHalf` are @@ -38,7 +45,14 @@ impl ReadHalf { pub fn reunite(self, other: WriteHalf) -> Result> { self.handle .reunite(other.handle) - .map_err(|err| ReuniteError(ReadHalf { handle: err.0 }, WriteHalf { handle: err.1 })) + .map_err(|err| ReuniteError(Self { handle: err.0 }, WriteHalf { handle: err.1 })) + } +} + +impl WriteHalf { + /// Checks if this `WriteHalf` and some `ReadHalf` were split from the same stream. + pub fn is_pair_of(&self, other: &ReadHalf) -> bool { + self.handle.is_pair_of(&other.handle) } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/take.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/take.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/take.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/take.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/window.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/window.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/window.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/window.rs index 77b7267c695e..d85728238359 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/window.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/window.rs @@ -1,6 +1,6 @@ use std::ops::{Bound, Range, RangeBounds}; -/// A owned window around an underlying buffer. +/// An owned window around an underlying buffer. /// /// Normally slices work great for considering sub-portions of a buffer, but /// unfortunately a slice is a *borrowed* type in Rust which has an associated diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write_all.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write_all.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write_all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write_all.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write_all_vectored.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write_all_vectored.rs similarity index 99% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write_all_vectored.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write_all_vectored.rs index a8fc4c641c85..26b3f25d9234 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write_all_vectored.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write_all_vectored.rs @@ -49,6 +49,8 @@ mod tests { use std::io; use std::pin::Pin; use std::task::{Context, Poll}; + use std::vec; + use std::vec::Vec; use crate::io::{AsyncWrite, AsyncWriteExt, IoSlice}; use crate::task::noop_waker; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write_vectored.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write_vectored.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write_vectored.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write_vectored.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lib.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lib.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lib.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lib.rs index 9a10c93c9a08..2201e4f2c99a 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lib.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lib.rs @@ -1,15 +1,7 @@ //! Combinators and utilities for working with `Future`s, `Stream`s, `Sink`s, //! and the `AsyncRead` and `AsyncWrite` traits. -#![cfg_attr(feature = "write-all-vectored", feature(io_slice_advance))] -#![cfg_attr(not(feature = "std"), no_std)] -#![warn( - missing_debug_implementations, - missing_docs, - rust_2018_idioms, - single_use_lifetimes, - unreachable_pub -)] +#![no_std] #![doc(test( no_crate_inject, attr( @@ -17,6 +9,7 @@ allow(dead_code, unused_assignments, unused_variables) ) ))] +#![warn(missing_docs, unsafe_op_in_unsafe_fn)] #![cfg_attr(docsrs, feature(doc_cfg))] #[cfg(all(feature = "bilock", not(feature = "unstable")))] @@ -24,6 +17,8 @@ compile_error!("The `bilock` feature requires the `unstable` feature as an expli #[cfg(feature = "alloc")] extern crate alloc; +#[cfg(feature = "std")] +extern crate std; // Macro re-exports pub use futures_core::ready; @@ -329,7 +324,7 @@ pub use crate::io::{ #[cfg(feature = "alloc")] pub mod lock; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod abortable; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/bilock.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/bilock.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/bilock.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/bilock.rs index 7ddc66ad2ccf..a89678e05f2e 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/bilock.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/bilock.rs @@ -149,6 +149,11 @@ impl BiLock { BiLockAcquire { bilock: self } } + /// Returns `true` only if the other `BiLock` originated from the same call to `BiLock::new`. + pub fn is_pair_of(&self, other: &Self) -> bool { + Arc::ptr_eq(&self.arc, &other.arc) + } + /// Attempts to put the two "halves" of a `BiLock` back together and /// recover the original value. Succeeds only if the two `BiLock`s /// originated from the same call to `BiLock::new`. @@ -156,7 +161,7 @@ impl BiLock { where T: Unpin, { - if Arc::ptr_eq(&self.arc, &other.arc) { + if self.is_pair_of(&other) { drop(other); let inner = Arc::try_unwrap(self.arc) .ok() diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/mod.rs similarity index 72% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/mod.rs index 0be72717c897..8ca0ff625561 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/mod.rs @@ -3,25 +3,25 @@ //! This module is only available when the `std` or `alloc` feature of this //! library is activated, and it is activated by default. -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(any(feature = "sink", feature = "io"))] #[cfg(not(feature = "bilock"))] pub(crate) use self::bilock::BiLock; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "bilock")] #[cfg_attr(docsrs, doc(cfg(feature = "bilock")))] pub use self::bilock::{BiLock, BiLockAcquire, BiLockGuard, ReuniteError}; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "std")] pub use self::mutex::{ MappedMutexGuard, Mutex, MutexGuard, MutexLockFuture, OwnedMutexGuard, OwnedMutexLockFuture, }; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(any(feature = "bilock", feature = "sink", feature = "io"))] #[cfg_attr(docsrs, doc(cfg(feature = "bilock")))] #[cfg_attr(not(feature = "bilock"), allow(unreachable_pub))] mod bilock; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "std")] mod mutex; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/mutex.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/mutex.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/mutex.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/mutex.rs index 335ad1427318..c77048a786e8 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/mutex.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/mutex.rs @@ -541,11 +541,17 @@ unsafe impl Sync for OwnedMutexGuard {} unsafe impl Send for MappedMutexGuard<'_, T, U> {} unsafe impl Sync for MappedMutexGuard<'_, T, U> {} -#[test] -fn test_mutex_guard_debug_not_recurse() { - let mutex = Mutex::new(42); - let guard = mutex.try_lock().unwrap(); - let _ = format!("{:?}", guard); - let guard = MutexGuard::map(guard, |n| n); - let _ = format!("{:?}", guard); +#[cfg(test)] +mod tests { + use super::*; + use std::format; + + #[test] + fn test_mutex_guard_debug_not_recurse() { + let mutex = Mutex::new(42); + let guard = mutex.try_lock().unwrap(); + let _ = format!("{:?}", guard); + let guard = MutexGuard::map(guard, |n| n); + let _ = format!("{:?}", guard); + } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/never.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/never.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/never.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/never.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/buffer.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/buffer.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/buffer.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/buffer.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/close.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/close.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/close.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/close.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/drain.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/drain.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/drain.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/drain.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/err_into.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/err_into.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/err_into.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/err_into.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/fanout.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/fanout.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/fanout.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/fanout.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/feed.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/feed.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/feed.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/feed.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/flush.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/flush.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/flush.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/flush.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/map_err.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/map_err.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/map_err.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/map_err.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/mod.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/mod.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/send.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/send.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/send.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/send.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/send_all.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/send_all.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/send_all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/send_all.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/unfold.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/unfold.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/unfold.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/unfold.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/with.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/with.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/with.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/with.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/with_flat_map.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/with_flat_map.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/with_flat_map.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/with_flat_map.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/abortable.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/abortable.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/abortable.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/abortable.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/empty.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/empty.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/empty.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/empty.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_ordered.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_ordered.rs similarity index 72% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_ordered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_ordered.rs index 618bf1b7bd7a..2cc144e81d10 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_ordered.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_ordered.rs @@ -19,7 +19,8 @@ pin_project! { struct OrderWrapper { #[pin] data: T, // A future or a future's output - index: isize, + // Use i64 for index since isize may overflow in 32-bit targets. + index: i64, } } @@ -58,36 +59,39 @@ where /// An unbounded queue of futures. /// -/// This "combinator" is similar to [`FuturesUnordered`], but it imposes a FIFO order -/// on top of the set of futures. While futures in the set will race to +/// This "combinator" is similar to [`FuturesUnordered`], but it imposes a FIFO +/// order on top of the set of futures. While futures in the set will race to /// completion in parallel, results will only be returned in the order their /// originating futures were added to the queue. /// /// Futures are pushed into this queue and their realized values are yielded in /// order. This structure is optimized to manage a large number of futures. -/// Futures managed by `FuturesOrdered` will only be polled when they generate +/// Futures managed by [`FuturesOrdered`] will only be polled when they generate /// notifications. This reduces the required amount of work needed to coordinate /// large numbers of futures. /// -/// When a `FuturesOrdered` is first created, it does not contain any futures. -/// Calling `poll` in this state will result in `Poll::Ready(None))` to be -/// returned. Futures are submitted to the queue using `push`; however, the -/// future will **not** be polled at this point. `FuturesOrdered` will only -/// poll managed futures when `FuturesOrdered::poll` is called. As such, it -/// is important to call `poll` after pushing new futures. +/// When a [`FuturesOrdered`] is first created, it does not contain any futures. +/// Calling [`poll_next`](FuturesOrdered::poll_next) in this state will result +/// in [`Poll::Ready(None)`](Poll::Ready) to be returned. Futures are submitted +/// to the queue using [`push_back`](FuturesOrdered::push_back) (or +/// [`push_front`](FuturesOrdered::push_front)); however, the future will +/// **not** be polled at this point. [`FuturesOrdered`] will only poll managed +/// futures when [`FuturesOrdered::poll_next`] is called. As such, it +/// is important to call [`poll_next`](FuturesOrdered::poll_next) after pushing +/// new futures. /// -/// If `FuturesOrdered::poll` returns `Poll::Ready(None)` this means that -/// the queue is currently not managing any futures. A future may be submitted -/// to the queue at a later time. At that point, a call to -/// `FuturesOrdered::poll` will either return the future's resolved value -/// **or** `Poll::Pending` if the future has not yet completed. When -/// multiple futures are submitted to the queue, `FuturesOrdered::poll` will -/// return `Poll::Pending` until the first future completes, even if +/// If [`FuturesOrdered::poll_next`] returns [`Poll::Ready(None)`](Poll::Ready) +/// this means that the queue is currently not managing any futures. A future +/// may be submitted to the queue at a later time. At that point, a call to +/// [`FuturesOrdered::poll_next`] will either return the future's resolved value +/// **or** [`Poll::Pending`] if the future has not yet completed. When +/// multiple futures are submitted to the queue, [`FuturesOrdered::poll_next`] +/// will return [`Poll::Pending`] until the first future completes, even if /// some of the later futures have already completed. /// -/// Note that you can create a ready-made `FuturesOrdered` via the +/// Note that you can create a ready-made [`FuturesOrdered`] via the /// [`collect`](Iterator::collect) method, or you can start with an empty queue -/// with the `FuturesOrdered::new` constructor. +/// with the [`FuturesOrdered::new`] constructor. /// /// This type is only available when the `std` or `alloc` feature of this /// library is activated, and it is activated by default. @@ -95,8 +99,8 @@ where pub struct FuturesOrdered { in_progress_queue: FuturesUnordered>, queued_outputs: BinaryHeap>, - next_incoming_index: isize, - next_outgoing_index: isize, + next_incoming_index: i64, + next_outgoing_index: i64, } impl Unpin for FuturesOrdered {} @@ -104,8 +108,9 @@ impl Unpin for FuturesOrdered {} impl FuturesOrdered { /// Constructs a new, empty `FuturesOrdered` /// - /// The returned `FuturesOrdered` does not contain any futures and, in this - /// state, `FuturesOrdered::poll_next` will return `Poll::Ready(None)`. + /// The returned [`FuturesOrdered`] does not contain any futures and, in + /// this state, [`FuturesOrdered::poll_next`] will return + /// [`Poll::Ready(None)`](Poll::Ready). pub fn new() -> Self { Self { in_progress_queue: FuturesUnordered::new(), @@ -132,9 +137,9 @@ impl FuturesOrdered { /// Push a future into the queue. /// /// This function submits the given future to the internal set for managing. - /// This function will not call `poll` on the submitted future. The caller - /// must ensure that `FuturesOrdered::poll` is called in order to receive - /// task notifications. + /// This function will not call [`poll`](Future::poll) on the submitted + /// future. The caller must ensure that [`FuturesOrdered::poll_next`] is + /// called in order to receive task notifications. #[deprecated(note = "use `push_back` instead")] pub fn push(&mut self, future: Fut) { self.push_back(future); @@ -143,9 +148,9 @@ impl FuturesOrdered { /// Pushes a future to the back of the queue. /// /// This function submits the given future to the internal set for managing. - /// This function will not call `poll` on the submitted future. The caller - /// must ensure that `FuturesOrdered::poll` is called in order to receive - /// task notifications. + /// This function will not call [`poll`](Future::poll) on the submitted + /// future. The caller must ensure that [`FuturesOrdered::poll_next`] is + /// called in order to receive task notifications. pub fn push_back(&mut self, future: Fut) { let wrapped = OrderWrapper { data: future, index: self.next_incoming_index }; self.next_incoming_index += 1; @@ -155,10 +160,10 @@ impl FuturesOrdered { /// Pushes a future to the front of the queue. /// /// This function submits the given future to the internal set for managing. - /// This function will not call `poll` on the submitted future. The caller - /// must ensure that `FuturesOrdered::poll` is called in order to receive - /// task notifications. This future will be the next future to be returned - /// complete. + /// This function will not call [`poll`](Future::poll) on the submitted + /// future. The caller must ensure that [`FuturesOrdered::poll_next`] is + /// called in order to receive task notifications. This future will be + /// the next future to be returned complete. pub fn push_front(&mut self, future: Fut) { let wrapped = OrderWrapper { data: future, index: self.next_outgoing_index - 1 }; self.next_outgoing_index -= 1; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/abort.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/abort.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/abort.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/abort.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/iter.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/iter.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/iter.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/iter.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/mod.rs similarity index 91% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/mod.rs index 6b5804dc4183..ca62b10b918a 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/mod.rs @@ -62,7 +62,7 @@ pub struct FuturesUnordered { } unsafe impl Send for FuturesUnordered {} -unsafe impl Sync for FuturesUnordered {} +unsafe impl Sync for FuturesUnordered {} impl Unpin for FuturesUnordered {} impl Spawn for FuturesUnordered> { @@ -256,16 +256,6 @@ impl FuturesUnordered { // `wake` from doing any work in the future let prev = task.queued.swap(true, SeqCst); - // Drop the future, even if it hasn't finished yet. This is safe - // because we're dropping the future on the thread that owns - // `FuturesUnordered`, which correctly tracks `Fut`'s lifetimes and - // such. - unsafe { - // 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 // is still in our internal ready to run queue. We then transfer // ownership of our reference count to the ready to run queue, and it'll @@ -277,8 +267,25 @@ impl FuturesUnordered { // enqueue the task, so our task will never see the ready to run queue // again. The task itself will be deallocated once all reference counts // have been dropped elsewhere by the various wakers that contain it. - if prev { - mem::forget(task); + // + // Use ManuallyDrop to transfer the reference count ownership before + // dropping the future so unwinding won't release the reference count. + let md_slot; + let task = if prev { + md_slot = mem::ManuallyDrop::new(task); + &*md_slot + } else { + &task + }; + + // Drop the future, even if it hasn't finished yet. This is safe + // because we're dropping the future on the thread that owns + // `FuturesUnordered`, which correctly tracks `Fut`'s lifetimes and + // such. + unsafe { + // Set to `None` rather than `take()`ing to prevent moving the + // future. + *task.future.get() = None; } } @@ -324,35 +331,37 @@ impl FuturesUnordered { /// This method is unsafe because it has be guaranteed that `task` is a /// valid pointer. unsafe fn unlink(&mut self, task: *const Task) -> Arc> { - // Compute the new list length now in case we're removing the head node - // and won't be able to retrieve the correct length later. - let head = *self.head_all.get_mut(); - debug_assert!(!head.is_null()); - let new_len = *(*head).len_all.get() - 1; - - let task = Arc::from_raw(task); - let next = task.next_all.load(Relaxed); - let prev = *task.prev_all.get(); - task.next_all.store(self.pending_next_all(), Relaxed); - *task.prev_all.get() = ptr::null_mut(); - - if !next.is_null() { - *(*next).prev_all.get() = prev; - } + unsafe { + // Compute the new list length now in case we're removing the head node + // and won't be able to retrieve the correct length later. + let head = *self.head_all.get_mut(); + debug_assert!(!head.is_null()); + let new_len = *(*head).len_all.get() - 1; - if !prev.is_null() { - (*prev).next_all.store(next, Relaxed); - } else { - *self.head_all.get_mut() = next; - } + let task = Arc::from_raw(task); + let next = task.next_all.load(Relaxed); + let prev = *task.prev_all.get(); + task.next_all.store(self.pending_next_all(), Relaxed); + *task.prev_all.get() = ptr::null_mut(); - // Store the new list length in the head node. - let head = *self.head_all.get_mut(); - if !head.is_null() { - *(*head).len_all.get() = new_len; - } + if !next.is_null() { + *(*next).prev_all.get() = prev; + } + + if !prev.is_null() { + (*prev).next_all.store(next, Relaxed); + } else { + *self.head_all.get_mut() = next; + } + + // Store the new list length in the head node. + let head = *self.head_all.get_mut(); + if !head.is_null() { + *(*head).len_all.get() = new_len; + } - task + task + } } /// Returns the reserved value for `Task::next_all` to indicate a pending @@ -509,7 +518,8 @@ impl Stream for FuturesUnordered { // We are only interested in whether the future is awoken before it // finishes polling, so reset the flag here. task.woken.store(false, Relaxed); - let waker = Task::waker_ref(task); + // SAFETY: see the comments of Bomb and this block. + let waker = unsafe { Task::waker_ref(task) }; let mut cx = Context::from_waker(&waker); // Safety: We won't move the future ever again @@ -558,30 +568,33 @@ impl Debug for FuturesUnordered { impl FuturesUnordered { /// Clears the set, removing all futures. pub fn clear(&mut self) { - self.clear_head_all(); - - // we just cleared all the tasks, and we have &mut self, so this is safe. - unsafe { self.ready_to_run_queue.clear() }; - - self.is_terminated.store(false, Relaxed); - } - - fn clear_head_all(&mut self) { - while !self.head_all.get_mut().is_null() { - let head = *self.head_all.get_mut(); - let task = unsafe { self.unlink(head) }; - self.release_task(task); - } + *self = Self::new(); } } impl Drop for FuturesUnordered { fn drop(&mut self) { + // Before the strong reference to the queue is dropped we need all + // futures to be dropped. See note at the bottom of this method. + // + // If there is a panic before this completes, we leak the queue. + struct LeakQueueOnDrop<'a, Fut>(&'a mut FuturesUnordered); + impl Drop for LeakQueueOnDrop<'_, Fut> { + fn drop(&mut self) { + mem::forget(Arc::clone(&self.0.ready_to_run_queue)); + } + } + let guard = LeakQueueOnDrop(self); // When a `FuturesUnordered` is dropped we want to drop all futures // associated with it. At the same time though there may be tons of // wakers flying around which contain `Task` references // inside them. We'll let those naturally get deallocated. - self.clear_head_all(); + while !guard.0.head_all.get_mut().is_null() { + let head = *guard.0.head_all.get_mut(); + let task = unsafe { guard.0.unlink(head) }; + guard.0.release_task(task); + } + mem::forget(guard); // safe to release strong reference to queue // Note that at this point we could still have a bunch of tasks in the // ready to run queue. None of those tasks, however, have futures diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/ready_to_run_queue.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/ready_to_run_queue.rs similarity index 53% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/ready_to_run_queue.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/ready_to_run_queue.rs index 4518705320e0..6ffaf554dd43 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/ready_to_run_queue.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/ready_to_run_queue.rs @@ -27,6 +27,8 @@ pub(super) struct ReadyToRunQueue { /// An MPSC queue into which the tasks containing the futures are inserted /// whenever the future inside is scheduled for polling. impl ReadyToRunQueue { + // FIXME: this takes raw pointer without safety conditions. + /// The enqueue function from the 1024cores intrusive MPSC queue algorithm. pub(super) fn enqueue(&self, task: *const Task) { unsafe { @@ -47,76 +49,65 @@ impl ReadyToRunQueue { /// Note that this is unsafe as it required mutual exclusion (only one /// thread can call this) to be guaranteed elsewhere. pub(super) unsafe fn dequeue(&self) -> Dequeue { - let mut tail = *self.tail.get(); - let mut next = (*tail).next_ready_to_run.load(Acquire); + unsafe { + let mut tail = *self.tail.get(); + let mut next = (*tail).next_ready_to_run.load(Acquire); - if tail == self.stub() { - if next.is_null() { - return Dequeue::Empty; + if tail == self.stub() { + if next.is_null() { + return Dequeue::Empty; + } + + *self.tail.get() = next; + tail = next; + next = (*next).next_ready_to_run.load(Acquire); } - *self.tail.get() = next; - tail = next; - next = (*next).next_ready_to_run.load(Acquire); - } + if !next.is_null() { + *self.tail.get() = next; + debug_assert!(tail != self.stub()); + return Dequeue::Data(tail); + } - if !next.is_null() { - *self.tail.get() = next; - debug_assert!(tail != self.stub()); - return Dequeue::Data(tail); - } + if self.head.load(Acquire) as *const _ != tail { + return Dequeue::Inconsistent; + } - if self.head.load(Acquire) as *const _ != tail { - return Dequeue::Inconsistent; - } + self.enqueue(self.stub()); - self.enqueue(self.stub()); + next = (*tail).next_ready_to_run.load(Acquire); - next = (*tail).next_ready_to_run.load(Acquire); + if !next.is_null() { + *self.tail.get() = next; + return Dequeue::Data(tail); + } - if !next.is_null() { - *self.tail.get() = next; - return Dequeue::Data(tail); + Dequeue::Inconsistent } - - Dequeue::Inconsistent } pub(super) fn stub(&self) -> *const Task { Arc::as_ptr(&self.stub) } - - // Clear the queue of tasks. - // - // Note that each task has a strong reference count associated with it - // which is owned by the ready to run queue. This method just pulls out - // tasks and drops their refcounts. - // - // # Safety - // - // - All tasks **must** have had their futures dropped already (by FuturesUnordered::clear) - // - The caller **must** guarantee unique access to `self` - pub(crate) unsafe fn clear(&self) { - loop { - // SAFETY: We have the guarantee of mutual exclusion required by `dequeue`. - match self.dequeue() { - Dequeue::Empty => break, - Dequeue::Inconsistent => abort("inconsistent in drop"), - Dequeue::Data(ptr) => drop(Arc::from_raw(ptr)), - } - } - } } impl Drop for ReadyToRunQueue { fn drop(&mut self) { // Once we're in the destructor for `Inner` we need to clear out // the ready to run queue of tasks if there's anything left in there. - - // All tasks have had their futures dropped already by the `FuturesUnordered` - // destructor above, and we have &mut self, so this is safe. + // + // Note that each task has a strong reference count associated with it + // which is owned by the ready to run queue. All tasks should have had + // their futures dropped already by the `FuturesUnordered` destructor + // above, so we're just pulling out tasks and dropping their refcounts. unsafe { - self.clear(); + loop { + match self.dequeue() { + Dequeue::Empty => break, + Dequeue::Inconsistent => abort("inconsistent in drop"), + Dequeue::Data(ptr) => drop(Arc::from_raw(ptr)), + } + } } } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/task.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/task.rs similarity index 59% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/task.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/task.rs index ec2114effa02..2ae4cb7d85c3 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/task.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/task.rs @@ -5,7 +5,7 @@ use core::sync::atomic::{AtomicBool, AtomicPtr}; use super::abort::abort; use super::ReadyToRunQueue; -use crate::task::{waker_ref, ArcWake, WakerRef}; +use crate::task::ArcWake; pub(super) struct Task { // The future @@ -77,8 +77,8 @@ impl ArcWake for Task { impl Task { /// Returns a waker reference for this task without cloning the Arc. - pub(super) fn waker_ref(this: &Arc) -> WakerRef<'_> { - waker_ref(this) + pub(super) unsafe fn waker_ref(this: &Arc) -> waker_ref::WakerRef<'_> { + unsafe { waker_ref::waker_ref(this) } } /// Spins until `next_all` is no longer set to `pending_next_all`. @@ -123,3 +123,92 @@ impl Drop for Task { } } } + +mod waker_ref { + use alloc::sync::Arc; + use core::marker::PhantomData; + use core::mem; + use core::mem::ManuallyDrop; + use core::ops::Deref; + use core::task::{RawWaker, RawWakerVTable, Waker}; + use futures_task::ArcWake; + + pub(crate) struct WakerRef<'a> { + waker: ManuallyDrop, + _marker: PhantomData<&'a ()>, + } + + impl WakerRef<'_> { + #[inline] + fn new_unowned(waker: ManuallyDrop) -> Self { + Self { waker, _marker: PhantomData } + } + } + + impl Deref for WakerRef<'_> { + type Target = Waker; + + #[inline] + fn deref(&self) -> &Waker { + &self.waker + } + } + + /// Copy of `future_task::waker_ref` without `W: 'static` bound. + /// + /// # Safety + /// + /// The caller must guarantee that use-after-free will not occur. + #[inline] + pub(crate) unsafe fn waker_ref(wake: &Arc) -> WakerRef<'_> + where + W: ArcWake, + { + // simply copy the pointer instead of using Arc::into_raw, + // as we don't actually keep a refcount by using ManuallyDrop.< + let ptr = Arc::as_ptr(wake).cast::<()>(); + + let waker = + ManuallyDrop::new(unsafe { Waker::from_raw(RawWaker::new(ptr, waker_vtable::())) }); + WakerRef::new_unowned(waker) + } + + fn waker_vtable() -> &'static RawWakerVTable { + &RawWakerVTable::new( + clone_arc_raw::, + wake_arc_raw::, + wake_by_ref_arc_raw::, + drop_arc_raw::, + ) + } + + // FIXME: panics on Arc::clone / refcount changes could wreak havoc on the + // code here. We should guard against this by aborting. + + unsafe fn increase_refcount(data: *const ()) { + // Retain Arc, but don't touch refcount by wrapping in ManuallyDrop + let arc = mem::ManuallyDrop::new(unsafe { Arc::::from_raw(data.cast::()) }); + // Now increase refcount, but don't drop new refcount either + let _arc_clone: mem::ManuallyDrop<_> = arc.clone(); + } + + unsafe fn clone_arc_raw(data: *const ()) -> RawWaker { + unsafe { increase_refcount::(data) } + RawWaker::new(data, waker_vtable::()) + } + + unsafe fn wake_arc_raw(data: *const ()) { + let arc: Arc = unsafe { Arc::from_raw(data.cast::()) }; + ArcWake::wake(arc); + } + + unsafe fn wake_by_ref_arc_raw(data: *const ()) { + // Retain Arc, but don't touch refcount by wrapping in ManuallyDrop + let arc = mem::ManuallyDrop::new(unsafe { Arc::::from_raw(data.cast::()) }); + ArcWake::wake_by_ref(&arc); + } + + unsafe fn drop_arc_raw(data: *const ()) { + drop(unsafe { Arc::::from_raw(data.cast::()) }) + } +} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/iter.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/iter.rs similarity index 72% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/iter.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/iter.rs index 20471c2ed063..48b6519a394b 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/iter.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/iter.rs @@ -10,6 +10,23 @@ pub struct Iter { iter: I, } +impl Iter { + /// Acquires a reference to the underlying iterator that this stream is pulling from. + pub fn get_ref(&self) -> &I { + &self.iter + } + + /// Acquires a mutable reference to the underlying iterator that this stream is pulling from. + pub fn get_mut(&mut self) -> &mut I { + &mut self.iter + } + + /// Consumes this stream, returning the underlying iterator. + pub fn into_inner(self) -> I { + self.iter + } +} + impl Unpin for Iter {} /// Converts an `Iterator` into a `Stream` which is always ready diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/mod.rs similarity index 76% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/mod.rs index bf9506147c4f..2438e58b62ac 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/mod.rs @@ -37,13 +37,13 @@ pub use self::stream::ReadyChunks; #[cfg_attr(docsrs, doc(cfg(feature = "sink")))] pub use self::stream::Forward; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use self::stream::{ BufferUnordered, Buffered, FlatMapUnordered, FlattenUnordered, ForEachConcurrent, }; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "sink")] #[cfg_attr(docsrs, doc(cfg(feature = "sink")))] #[cfg(feature = "alloc")] @@ -51,9 +51,9 @@ pub use self::stream::{ReuniteError, SplitSink, SplitStream}; mod try_stream; pub use self::try_stream::{ - try_unfold, AndThen, ErrInto, InspectErr, InspectOk, IntoStream, MapErr, MapOk, OrElse, - TryCollect, TryConcat, TryFilter, TryFilterMap, TryFlatten, TryFold, TryForEach, TryNext, - TrySkipWhile, TryStreamExt, TryTakeWhile, TryUnfold, + try_unfold, AndThen, ErrInto, InspectErr, InspectOk, IntoStream, MapErr, MapOk, OrElse, TryAll, + TryAny, TryCollect, TryConcat, TryFilter, TryFilterMap, TryFlatten, TryFold, TryForEach, + TryNext, TrySkipWhile, TryStreamExt, TryTakeWhile, TryUnfold, }; #[cfg(feature = "io")] @@ -61,14 +61,14 @@ pub use self::try_stream::{ #[cfg(feature = "std")] pub use self::try_stream::IntoAsyncRead; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use self::try_stream::{ TryBufferUnordered, TryBuffered, TryFlattenUnordered, TryForEachConcurrent, }; #[cfg(feature = "alloc")] -pub use self::try_stream::{TryChunks, TryChunksError}; +pub use self::try_stream::{TryChunks, TryChunksError, TryReadyChunks, TryReadyChunksError}; // Primitive streams @@ -105,36 +105,36 @@ pub use self::select_with_strategy::{select_with_strategy, PollNext, SelectWithS mod unfold; pub use self::unfold::{unfold, Unfold}; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod futures_ordered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use self::futures_ordered::FuturesOrdered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub mod futures_unordered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] #[doc(inline)] pub use self::futures_unordered::FuturesUnordered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub mod select_all; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] #[doc(inline)] pub use self::select_all::{select_all, SelectAll}; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod abortable; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use crate::abortable::{AbortHandle, AbortRegistration, Abortable, Aborted}; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use abortable::abortable; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/once.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/once.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/once.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/once.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/pending.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/pending.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/pending.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/pending.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/poll_fn.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/poll_fn.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/poll_fn.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/poll_fn.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/poll_immediate.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/poll_immediate.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/poll_immediate.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/poll_immediate.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/repeat.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/repeat.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/repeat.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/repeat.rs index 3f9aa87d5c70..e09cfa2e4169 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/repeat.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/repeat.rs @@ -44,7 +44,7 @@ where } fn size_hint(&self) -> (usize, Option) { - (usize::max_value(), None) + (usize::MAX, None) } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/repeat_with.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/repeat_with.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/repeat_with.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/repeat_with.rs index f5a81b4ed4c5..a48251070579 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/repeat_with.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/repeat_with.rs @@ -24,7 +24,7 @@ impl A> Stream for RepeatWith { } fn size_hint(&self) -> (usize, Option) { - (usize::max_value(), None) + (usize::MAX, None) } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/select.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/select.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/select.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/select.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/select_all.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/select_all.rs similarity index 89% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/select_all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/select_all.rs index 3474331adc99..121b6a0e592c 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/select_all.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/select_all.rs @@ -8,29 +8,24 @@ use futures_core::ready; use futures_core::stream::{FusedStream, Stream}; use futures_core::task::{Context, Poll}; -use pin_project_lite::pin_project; - use super::assert_stream; use crate::stream::{futures_unordered, FuturesUnordered, StreamExt, StreamFuture}; -pin_project! { - /// An unbounded set of streams - /// - /// This "combinator" provides the ability to maintain a set of streams - /// and drive them all to completion. - /// - /// Streams are pushed into this set and their realized values are - /// yielded as they become ready. Streams will only be polled when they - /// generate notifications. This allows to coordinate a large number of streams. - /// - /// Note that you can create a ready-made `SelectAll` via the - /// `select_all` function in the `stream` module, or you can start with an - /// empty set with the `SelectAll::new` constructor. - #[must_use = "streams do nothing unless polled"] - pub struct SelectAll { - #[pin] - inner: FuturesUnordered>, - } +/// An unbounded set of streams +/// +/// This "combinator" provides the ability to maintain a set of streams +/// and drive them all to completion. +/// +/// Streams are pushed into this set and their realized values are +/// yielded as they become ready. Streams will only be polled when they +/// generate notifications. This allows to coordinate a large number of streams. +/// +/// Note that you can create a ready-made `SelectAll` via the +/// `select_all` function in the `stream` module, or you can start with an +/// empty set with the `SelectAll::new` constructor. +#[must_use = "streams do nothing unless polled"] +pub struct SelectAll { + inner: FuturesUnordered>, } impl Debug for SelectAll { diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/select_with_strategy.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/select_with_strategy.rs similarity index 93% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/select_with_strategy.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/select_with_strategy.rs index 224d5f821c72..4e19873af77b 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/select_with_strategy.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/select_with_strategy.rs @@ -21,17 +21,17 @@ impl PollNext { old } - fn other(&self) -> PollNext { + fn other(&self) -> Self { match self { - PollNext::Left => PollNext::Right, - PollNext::Right => PollNext::Left, + Self::Left => Self::Right, + Self::Right => Self::Left, } } } impl Default for PollNext { fn default() -> Self { - PollNext::Left + Self::Left } } @@ -45,15 +45,14 @@ enum InternalState { impl InternalState { fn finish(&mut self, ps: PollNext) { match (&self, ps) { - (InternalState::Start, PollNext::Left) => { - *self = InternalState::LeftFinished; + (Self::Start, PollNext::Left) => { + *self = Self::LeftFinished; } - (InternalState::Start, PollNext::Right) => { - *self = InternalState::RightFinished; + (Self::Start, PollNext::Right) => { + *self = Self::RightFinished; } - (InternalState::LeftFinished, PollNext::Right) - | (InternalState::RightFinished, PollNext::Left) => { - *self = InternalState::BothFinished; + (Self::LeftFinished, PollNext::Right) | (Self::RightFinished, PollNext::Left) => { + *self = Self::BothFinished; } _ => {} } @@ -75,6 +74,7 @@ pin_project! { } } +#[allow(clippy::too_long_first_doc_paragraph)] /// This function will attempt to pull items from both streams. You provide a /// closure to tell [`SelectWithStrategy`] which stream to poll. The closure can /// store state on `SelectWithStrategy` to which it will receive a `&mut` on every diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/all.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/all.rs similarity index 82% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/all.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/all.rs index ba2baa5cf1d5..1435c798f285 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/all.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/all.rs @@ -13,7 +13,7 @@ pin_project! { #[pin] stream: St, f: F, - accum: Option, + done: bool, #[pin] future: Option, } @@ -27,7 +27,7 @@ where fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("All") .field("stream", &self.stream) - .field("accum", &self.accum) + .field("done", &self.done) .field("future", &self.future) .finish() } @@ -40,7 +40,7 @@ where Fut: Future, { pub(super) fn new(stream: St, f: F) -> Self { - Self { stream, f, accum: Some(true), future: None } + Self { stream, f, done: false, future: None } } } @@ -51,7 +51,7 @@ where Fut: Future, { fn is_terminated(&self) -> bool { - self.accum.is_none() && self.future.is_none() + self.done && self.future.is_none() } } @@ -67,21 +67,22 @@ where let mut this = self.project(); Poll::Ready(loop { if let Some(fut) = this.future.as_mut().as_pin_mut() { - // we're currently processing a future to produce a new accum value - let acc = this.accum.unwrap() && ready!(fut.poll(cx)); - if !acc { + // we're currently processing a future to produce a new value + let res = ready!(fut.poll(cx)); + this.future.set(None); + if !res { + *this.done = true; break false; } // early exit - *this.accum = Some(acc); - this.future.set(None); - } else if this.accum.is_some() { + } else if !*this.done { // we're waiting on a new item from the stream match ready!(this.stream.as_mut().poll_next(cx)) { Some(item) => { this.future.set(Some((this.f)(item))); } None => { - break this.accum.take().unwrap(); + *this.done = true; + break true; } } } else { diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/any.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/any.rs similarity index 82% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/any.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/any.rs index f023125c70cc..cc3d695b9d1e 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/any.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/any.rs @@ -13,7 +13,7 @@ pin_project! { #[pin] stream: St, f: F, - accum: Option, + done: bool, #[pin] future: Option, } @@ -27,7 +27,7 @@ where fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("Any") .field("stream", &self.stream) - .field("accum", &self.accum) + .field("done", &self.done) .field("future", &self.future) .finish() } @@ -40,7 +40,7 @@ where Fut: Future, { pub(super) fn new(stream: St, f: F) -> Self { - Self { stream, f, accum: Some(false), future: None } + Self { stream, f, done: false, future: None } } } @@ -51,7 +51,7 @@ where Fut: Future, { fn is_terminated(&self) -> bool { - self.accum.is_none() && self.future.is_none() + self.done && self.future.is_none() } } @@ -67,21 +67,22 @@ where let mut this = self.project(); Poll::Ready(loop { if let Some(fut) = this.future.as_mut().as_pin_mut() { - // we're currently processing a future to produce a new accum value - let acc = this.accum.unwrap() || ready!(fut.poll(cx)); - if acc { + // we're currently processing a future to produce a new value + let res = ready!(fut.poll(cx)); + this.future.set(None); + if res { + *this.done = true; break true; } // early exit - *this.accum = Some(acc); - this.future.set(None); - } else if this.accum.is_some() { + } else if !*this.done { // we're waiting on a new item from the stream match ready!(this.stream.as_mut().poll_next(cx)) { Some(item) => { this.future.set(Some((this.f)(item))); } None => { - break this.accum.take().unwrap(); + *this.done = true; + break false; } } } else { diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/buffer_unordered.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/buffer_unordered.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/buffer_unordered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/buffer_unordered.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/buffered.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/buffered.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/buffered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/buffered.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/catch_unwind.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/catch_unwind.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/catch_unwind.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/catch_unwind.rs index 09a6dc1b76db..dfc388839d99 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/catch_unwind.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/catch_unwind.rs @@ -2,6 +2,7 @@ use futures_core::stream::{FusedStream, Stream}; use futures_core::task::{Context, Poll}; use pin_project_lite::pin_project; use std::any::Any; +use std::boxed::Box; use std::panic::{catch_unwind, AssertUnwindSafe, UnwindSafe}; use std::pin::Pin; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/chain.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/chain.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/chain.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/chain.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/chunks.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/chunks.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/chunks.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/chunks.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/collect.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/collect.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/collect.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/collect.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/concat.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/concat.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/concat.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/concat.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/count.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/count.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/count.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/count.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/cycle.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/cycle.rs similarity index 96% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/cycle.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/cycle.rs index 507431d24f98..60fe7453991d 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/cycle.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/cycle.rs @@ -1,5 +1,4 @@ use core::pin::Pin; -use core::usize; use futures_core::ready; use futures_core::stream::{FusedStream, Stream}; use futures_core::task::{Context, Poll}; @@ -48,7 +47,7 @@ where match self.orig.size_hint() { size @ (0, Some(0)) => size, (0, _) => (0, None), - _ => (usize::max_value(), None), + _ => (usize::MAX, None), } } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/enumerate.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/enumerate.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/enumerate.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/enumerate.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/filter.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/filter.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/filter.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/filter.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/filter_map.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/filter_map.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/filter_map.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/filter_map.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/flatten.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/flatten.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/flatten.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/flatten.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/flatten_unordered.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/flatten_unordered.rs similarity index 89% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/flatten_unordered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/flatten_unordered.rs index 484c3733aa05..c79edbd213ee 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/flatten_unordered.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/flatten_unordered.rs @@ -56,26 +56,24 @@ struct SharedPollState { impl SharedPollState { /// Constructs new `SharedPollState` with the given state. - fn new(value: u8) -> SharedPollState { - SharedPollState { state: Arc::new(AtomicU8::new(value)) } + fn new(value: u8) -> Self { + Self { state: Arc::new(AtomicU8::new(value)) } } /// Attempts to start polling, returning stored state in case of success. - /// Returns `None` if either waker is waking at the moment or state is empty. - fn start_polling( - &self, - ) -> Option<(u8, PollStateBomb<'_, impl FnOnce(&SharedPollState) -> u8>)> { + /// Returns `None` if either waker is waking at the moment. + fn start_polling(&self) -> Option<(u8, PollStateBomb<'_, impl FnOnce(&Self) -> u8>)> { let value = self .state .fetch_update(Ordering::SeqCst, Ordering::SeqCst, |value| { - if value & WAKING == NONE && value & NEED_TO_POLL_ALL != NONE { + if value & WAKING == NONE { Some(POLLING) } else { None } }) .ok()?; - let bomb = PollStateBomb::new(self, SharedPollState::reset); + let bomb = PollStateBomb::new(self, Self::reset); Some((value, bomb)) } @@ -87,7 +85,7 @@ impl SharedPollState { fn start_waking( &self, to_poll: u8, - ) -> Option<(u8, PollStateBomb<'_, impl FnOnce(&SharedPollState) -> u8>)> { + ) -> Option<(u8, PollStateBomb<'_, impl FnOnce(&Self) -> u8>)> { let value = self .state .fetch_update(Ordering::SeqCst, Ordering::SeqCst, |value| { @@ -106,7 +104,7 @@ impl SharedPollState { // Only start the waking process if we're not in the polling/waking phase and the stream isn't woken already if value & (WOKEN | POLLING | WAKING) == NONE { - let bomb = PollStateBomb::new(self, SharedPollState::stop_waking); + let bomb = PollStateBomb::new(self, Self::stop_waking); Some((value, bomb)) } else { @@ -121,7 +119,7 @@ impl SharedPollState { /// - `!WAKING` as /// * Wakers called during the `POLLING` phase won't propagate their calls /// * `POLLING` phase can't start if some of the wakers are active - /// So no wrapped waker can touch the inner waker's cell, it's safe to poll again. + /// So no wrapped waker can touch the inner waker's cell, it's safe to poll again. fn stop_polling(&self, to_poll: u8, will_be_woken: bool) -> u8 { self.state .fetch_update(Ordering::SeqCst, Ordering::SeqCst, |mut value| { @@ -209,9 +207,8 @@ impl WrappedWaker { /// /// This function will modify waker's `inner_waker` via `UnsafeCell`, so /// it should be used only during `POLLING` phase by one thread at the time. - unsafe fn replace_waker(self_arc: &mut Arc, cx: &Context<'_>) -> Waker { - *self_arc.inner_waker.get() = cx.waker().clone().into(); - waker(self_arc.clone()) + unsafe fn replace_waker(self_arc: &mut Arc, cx: &Context<'_>) { + unsafe { *self_arc.inner_waker.get() = cx.waker().clone().into() } } /// Attempts to start the waking process for the waker with the given value. @@ -262,7 +259,7 @@ impl PollStreamFut { } impl Future for PollStreamFut { - type Output = Option<(St::Item, PollStreamFut)>; + type Output = Option<(St::Item, Self)>; fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let mut stream = self.project().stream; @@ -272,7 +269,7 @@ impl Future for PollStreamFut { } else { None }; - let next_item_fut = PollStreamFut::new(stream.get_mut().take()); + let next_item_fut = Self::new(stream.get_mut().take()); let out = item.map(|item| (item, next_item_fut)); Poll::Ready(out) @@ -321,13 +318,10 @@ where Fc: FlowController::Item>, St::Item: Stream + Unpin, { - pub(crate) fn new( - stream: St, - limit: Option, - ) -> FlattenUnorderedWithFlowController { + pub(crate) fn new(stream: St, limit: Option) -> Self { let poll_state = SharedPollState::new(NEED_TO_POLL_STREAM); - FlattenUnorderedWithFlowController { + Self { inner_streams: FuturesUnordered::new(), stream, is_stream_done: false, @@ -406,14 +400,19 @@ where let mut this = self.as_mut().project(); - let (mut poll_state_value, state_bomb) = match this.poll_state.start_polling() { - Some(value) => value, - _ => { - // Waker was called, just wait for the next poll - return Poll::Pending; + // Attempt to start polling, in case some waker is holding the lock, wait in loop + let (mut poll_state_value, state_bomb) = loop { + if let Some(value) = this.poll_state.start_polling() { + break value; } }; + // Safety: now state is `POLLING`. + unsafe { + WrappedWaker::replace_waker(this.stream_waker, cx); + WrappedWaker::replace_waker(this.inner_streams_waker, cx) + }; + if poll_state_value & NEED_TO_POLL_STREAM != NONE { let mut stream_waker = None; @@ -431,13 +430,9 @@ where break; } else { - // Initialize base stream waker if it's not yet initialized - if stream_waker.is_none() { - // Safety: now state is `POLLING`. - stream_waker - .replace(unsafe { WrappedWaker::replace_waker(this.stream_waker, cx) }); - } - let mut cx = Context::from_waker(stream_waker.as_ref().unwrap()); + let mut cx = Context::from_waker( + stream_waker.get_or_insert_with(|| waker(this.stream_waker.clone())), + ); match this.stream.as_mut().poll_next(&mut cx) { Poll::Ready(Some(item)) => { @@ -475,9 +470,7 @@ where } if poll_state_value & NEED_TO_POLL_INNER_STREAMS != NONE { - // Safety: now state is `POLLING`. - let inner_streams_waker = - unsafe { WrappedWaker::replace_waker(this.inner_streams_waker, cx) }; + let inner_streams_waker = waker(this.inner_streams_waker.clone()); let mut cx = Context::from_waker(&inner_streams_waker); match this.inner_streams.as_mut().poll_next(&mut cx) { diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/fold.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/fold.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/fold.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/fold.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/for_each.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/for_each.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/for_each.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/for_each.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/for_each_concurrent.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/for_each_concurrent.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/for_each_concurrent.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/for_each_concurrent.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/forward.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/forward.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/forward.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/forward.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/fuse.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/fuse.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/fuse.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/fuse.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/into_future.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/into_future.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/into_future.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/into_future.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/map.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/map.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/map.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/map.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/mod.rs similarity index 97% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/mod.rs index 558dc22bd714..d365cfe43f38 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/mod.rs @@ -181,32 +181,32 @@ mod scan; #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::scan::Scan; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod buffer_unordered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::buffer_unordered::BufferUnordered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod buffered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::buffered::Buffered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub(crate) mod flatten_unordered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] #[allow(unreachable_pub)] pub use self::flatten_unordered::FlattenUnordered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] delegate_all!( /// Stream for the [`flat_map_unordered`](StreamExt::flat_map_unordered) method. @@ -216,20 +216,20 @@ delegate_all!( where St: Stream, U: Stream, U: Unpin, F: FnMut(St::Item) -> U ); -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod for_each_concurrent; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::for_each_concurrent::ForEachConcurrent; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "sink")] #[cfg_attr(docsrs, doc(cfg(feature = "sink")))] #[cfg(feature = "alloc")] mod split; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "sink")] #[cfg_attr(docsrs, doc(cfg(feature = "sink")))] #[cfg(feature = "alloc")] @@ -323,6 +323,9 @@ pub trait StreamExt: Stream { /// wrapped version of it, similar to the existing `map` methods in the /// standard library. /// + /// See [`StreamExt::then`](Self::then) if you want to use a closure that + /// returns a future instead of a value. + /// /// # Examples /// /// ``` @@ -357,7 +360,7 @@ pub trait StreamExt: Stream { /// # Overflow Behavior /// /// The method does no guarding against overflows, so enumerating more than - /// [`prim@usize::max_value()`] elements either produces the wrong result or panics. If + /// [`usize::MAX`] elements either produces the wrong result or panics. If /// debug assertions are enabled, a panic is guaranteed. /// /// # Panics @@ -467,6 +470,9 @@ pub trait StreamExt: Stream { /// Note that this function consumes the stream passed into it and returns a /// wrapped version of it. /// + /// See [`StreamExt::map`](Self::map) if you want to use a closure that + /// returns a value instead of a future. + /// /// # Examples /// /// ``` @@ -814,7 +820,7 @@ pub trait StreamExt: Stream { /// assert_eq!(output, vec![1, 2, 3, 4]); /// # }); /// ``` - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] fn flatten_unordered(self, limit: impl Into>) -> FlattenUnordered where @@ -896,7 +902,7 @@ pub trait StreamExt: Stream { /// assert_eq!(vec![1usize, 2, 2, 3, 3, 3, 4, 4, 4, 4], values); /// # }); /// ``` - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] fn flat_map_unordered( self, @@ -1136,7 +1142,7 @@ pub trait StreamExt: Stream { /// fut.await; /// # }) /// ``` - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] fn for_each_concurrent( self, @@ -1359,7 +1365,7 @@ pub trait StreamExt: Stream { /// /// This method is only available when the `std` or `alloc` feature of this /// library is activated, and it is activated by default. - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] fn buffered(self, n: usize) -> Buffered where @@ -1404,7 +1410,7 @@ pub trait StreamExt: Stream { /// assert_eq!(buffered.next().await, None); /// # Ok::<(), i32>(()) }).unwrap(); /// ``` - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] fn buffer_unordered(self, n: usize) -> BufferUnordered where @@ -1571,7 +1577,7 @@ pub trait StreamExt: Stream { /// library is activated, and it is activated by default. #[cfg(feature = "sink")] #[cfg_attr(docsrs, doc(cfg(feature = "sink")))] - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] fn split(self) -> (SplitSink, SplitStream) where diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/next.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/next.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/next.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/next.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/peek.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/peek.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/peek.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/peek.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/ready_chunks.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/ready_chunks.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/ready_chunks.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/ready_chunks.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/scan.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/scan.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/scan.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/scan.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/select_next_some.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/select_next_some.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/select_next_some.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/select_next_some.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/skip.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/skip.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/skip.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/skip.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/skip_while.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/skip_while.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/skip_while.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/skip_while.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/split.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/split.rs similarity index 68% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/split.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/split.rs index e2034e0c27d0..e192f8a92db3 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/split.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/split.rs @@ -15,6 +15,13 @@ pub struct SplitStream(BiLock); impl Unpin for SplitStream {} +impl SplitStream { + /// Returns `true` if the `SplitStream` and `SplitSink` originate from the same call to `StreamExt::split`. + pub fn is_pair_of(&self, other: &SplitSink) -> bool { + other.is_pair_of(&self) + } +} + impl SplitStream { /// Attempts to put the two "halves" of a split `Stream + Sink` back /// together. Succeeds only if the `SplitStream` and `SplitSink` are @@ -60,6 +67,13 @@ impl + Unpin, Item> SplitSink { } } +impl SplitSink { + /// Returns `true` if the `SplitStream` and `SplitSink` originate from the same call to `StreamExt::split`. + pub fn is_pair_of(&self, other: &SplitStream) -> bool { + self.lock.is_pair_of(&other.0) + } +} + impl, Item> SplitSink { fn poll_flush_slot( mut inner: Pin<&mut S>, @@ -142,3 +156,69 @@ impl fmt::Display for ReuniteError { #[cfg(feature = "std")] impl std::error::Error for ReuniteError {} + +#[cfg(test)] +mod tests { + use super::*; + use crate::stream::StreamExt; + use core::marker::PhantomData; + + struct NopStream { + phantom: PhantomData, + } + + impl Stream for NopStream { + type Item = Item; + + fn poll_next(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { + todo!() + } + } + + impl Sink for NopStream { + type Error = (); + + fn poll_ready( + self: Pin<&mut Self>, + _cx: &mut Context<'_>, + ) -> Poll> { + todo!() + } + + fn start_send(self: Pin<&mut Self>, _item: Item) -> Result<(), Self::Error> { + todo!() + } + + fn poll_flush( + self: Pin<&mut Self>, + _cx: &mut Context<'_>, + ) -> Poll> { + todo!() + } + + fn poll_close( + self: Pin<&mut Self>, + _cx: &mut Context<'_>, + ) -> Poll> { + todo!() + } + } + + #[test] + fn test_pairing() { + let s1 = NopStream::<()> { phantom: PhantomData }; + let (sink1, stream1) = s1.split(); + assert!(sink1.is_pair_of(&stream1)); + assert!(stream1.is_pair_of(&sink1)); + + let s2 = NopStream::<()> { phantom: PhantomData }; + let (sink2, stream2) = s2.split(); + assert!(sink2.is_pair_of(&stream2)); + assert!(stream2.is_pair_of(&sink2)); + + assert!(!sink1.is_pair_of(&stream2)); + assert!(!stream1.is_pair_of(&sink2)); + assert!(!sink2.is_pair_of(&stream1)); + assert!(!stream2.is_pair_of(&sink1)); + } +} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/take.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/take.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/take.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/take.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/take_until.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/take_until.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/take_until.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/take_until.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/take_while.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/take_while.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/take_while.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/take_while.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/then.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/then.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/then.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/then.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/unzip.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/unzip.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/unzip.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/unzip.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/zip.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/zip.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/zip.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/zip.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/and_then.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/and_then.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/and_then.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/and_then.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/into_async_read.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/into_async_read.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/into_async_read.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/into_async_read.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/into_stream.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/into_stream.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/into_stream.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/into_stream.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/mod.rs similarity index 87% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/mod.rs index 414a40dbe358..ee004b51e810 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/mod.rs @@ -89,10 +89,10 @@ mod try_flatten; #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::try_flatten::TryFlatten; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod try_flatten_unordered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::try_flatten_unordered::TryFlattenUnordered; @@ -111,6 +111,12 @@ mod try_chunks; #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::try_chunks::{TryChunks, TryChunksError}; +#[cfg(feature = "alloc")] +mod try_ready_chunks; +#[cfg(feature = "alloc")] +#[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 +pub use self::try_ready_chunks::{TryReadyChunks, TryReadyChunksError}; + mod try_fold; #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::try_fold::TryFold; @@ -127,26 +133,26 @@ mod try_take_while; #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::try_take_while::TryTakeWhile; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod try_buffer_unordered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::try_buffer_unordered::TryBufferUnordered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod try_buffered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::try_buffered::TryBuffered; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] mod try_for_each_concurrent; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::try_for_each_concurrent::TryForEachConcurrent; @@ -160,6 +166,14 @@ mod into_async_read; #[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 pub use self::into_async_read::IntoAsyncRead; +mod try_all; +#[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 +pub use self::try_all::TryAll; + +mod try_any; +#[allow(unreachable_pub)] // https://github.com/rust-lang/rust/issues/57411 +pub use self::try_any::TryAny; + impl TryStreamExt for S {} /// Adapters specific to `Result`-returning streams @@ -537,7 +551,7 @@ pub trait TryStreamExt: TryStream { /// assert_eq!(Err(oneshot::Canceled), fut.await); /// # }) /// ``` - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] fn try_for_each_concurrent( self, @@ -640,6 +654,55 @@ pub trait TryStreamExt: TryStream { ) } + /// An adaptor for chunking up successful, ready items of the stream inside a vector. + /// + /// This combinator will attempt to pull successful items from this stream and buffer + /// them into a local vector. At most `capacity` items will get buffered + /// before they're yielded from the returned stream. If the underlying stream + /// returns `Poll::Pending`, and the collected chunk is not empty, it will + /// be immediately returned. + /// + /// Note that the vectors returned from this iterator may not always have + /// `capacity` elements. If the underlying stream ended and only a partial + /// vector was created, it'll be returned. Additionally if an error happens + /// from the underlying stream then the currently buffered items will be + /// yielded. + /// + /// This method is only available when the `std` or `alloc` feature of this + /// library is activated, and it is activated by default. + /// + /// This function is similar to + /// [`StreamExt::ready_chunks`](crate::stream::StreamExt::ready_chunks) but exits + /// early if an error occurs. + /// + /// # Examples + /// + /// ``` + /// # futures::executor::block_on(async { + /// use futures::stream::{self, TryReadyChunksError, TryStreamExt}; + /// + /// let stream = stream::iter(vec![Ok::(1), Ok(2), Ok(3), Err(4), Ok(5), Ok(6)]); + /// let mut stream = stream.try_ready_chunks(2); + /// + /// assert_eq!(stream.try_next().await, Ok(Some(vec![1, 2]))); + /// assert_eq!(stream.try_next().await, Err(TryReadyChunksError(vec![3], 4))); + /// assert_eq!(stream.try_next().await, Ok(Some(vec![5, 6]))); + /// # }) + /// ``` + /// + /// # Panics + /// + /// This method will panic if `capacity` is zero. + #[cfg(feature = "alloc")] + fn try_ready_chunks(self, capacity: usize) -> TryReadyChunks + where + Self: Sized, + { + assert_stream::, TryReadyChunksError>, _>( + TryReadyChunks::new(self, capacity), + ) + } + /// Attempt to filter the values produced by this stream according to the /// provided asynchronous closure. /// @@ -764,7 +827,7 @@ pub trait TryStreamExt: TryStream { /// assert_eq!(values, vec![Ok(1), Ok(2), Ok(4), Err(3), Err(5)]); /// # }); /// ``` - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] fn try_flatten_unordered(self, limit: impl Into>) -> TryFlattenUnordered where @@ -966,7 +1029,7 @@ pub trait TryStreamExt: TryStream { /// assert_eq!(buffered.next().await, Some(Err("error in the stream"))); /// # Ok::<(), Box>(()) }).unwrap(); /// ``` - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] fn try_buffer_unordered(self, n: usize) -> TryBufferUnordered where @@ -1042,7 +1105,7 @@ pub trait TryStreamExt: TryStream { /// assert_eq!(buffered.next().await, Some(Err("error in the stream"))); /// # Ok::<(), Box>(()) }).unwrap(); /// ``` - #[cfg(not(futures_no_atomic_cas))] + #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] fn try_buffered(self, n: usize) -> TryBuffered where @@ -1127,4 +1190,62 @@ pub trait TryStreamExt: TryStream { { crate::io::assert_read(IntoAsyncRead::new(self)) } + + /// Attempt to execute a predicate over an asynchronous stream and evaluate if all items + /// satisfy the predicate. Exits early if an `Err` is encountered or if an `Ok` item is found + /// that does not satisfy the predicate. + /// + /// # Examples + /// + /// ``` + /// # futures::executor::block_on(async { + /// use futures::stream::{self, StreamExt, TryStreamExt}; + /// use std::convert::Infallible; + /// + /// let number_stream = stream::iter(1..10).map(Ok::<_, Infallible>); + /// let positive = number_stream.try_all(|i| async move { i > 0 }); + /// assert_eq!(positive.await, Ok(true)); + /// + /// let stream_with_errors = stream::iter([Ok(1), Err("err"), Ok(3)]); + /// let positive = stream_with_errors.try_all(|i| async move { i > 0 }); + /// assert_eq!(positive.await, Err("err")); + /// # }); + /// ``` + fn try_all(self, f: F) -> TryAll + where + Self: Sized, + F: FnMut(Self::Ok) -> Fut, + Fut: Future, + { + assert_future::, _>(TryAll::new(self, f)) + } + + /// Attempt to execute a predicate over an asynchronous stream and evaluate if any items + /// satisfy the predicate. Exits early if an `Err` is encountered or if an `Ok` item is found + /// that satisfies the predicate. + /// + /// # Examples + /// + /// ``` + /// # futures::executor::block_on(async { + /// use futures::stream::{self, StreamExt, TryStreamExt}; + /// use std::convert::Infallible; + /// + /// let number_stream = stream::iter(0..10).map(Ok::<_, Infallible>); + /// let contain_three = number_stream.try_any(|i| async move { i == 3 }); + /// assert_eq!(contain_three.await, Ok(true)); + /// + /// let stream_with_errors = stream::iter([Ok(1), Err("err"), Ok(3)]); + /// let contain_three = stream_with_errors.try_any(|i| async move { i == 3 }); + /// assert_eq!(contain_three.await, Err("err")); + /// # }); + /// ``` + fn try_any(self, f: F) -> TryAny + where + Self: Sized, + F: FnMut(Self::Ok) -> Fut, + Fut: Future, + { + assert_future::, _>(TryAny::new(self, f)) + } } diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/or_else.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/or_else.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/or_else.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/or_else.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_all.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_all.rs new file mode 100644 index 000000000000..8179f86afcd6 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_all.rs @@ -0,0 +1,98 @@ +use core::fmt; +use core::pin::Pin; +use futures_core::future::{FusedFuture, Future}; +use futures_core::ready; +use futures_core::stream::TryStream; +use futures_core::task::{Context, Poll}; +use pin_project_lite::pin_project; + +pin_project! { + /// Future for the [`try_all`](super::TryStreamExt::try_all) method. + #[must_use = "futures do nothing unless you `.await` or poll them"] + pub struct TryAll { + #[pin] + stream: St, + f: F, + done: bool, + #[pin] + future: Option, + } +} + +impl fmt::Debug for TryAll +where + St: fmt::Debug, + Fut: fmt::Debug, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("TryAll") + .field("stream", &self.stream) + .field("done", &self.done) + .field("future", &self.future) + .finish() + } +} + +impl TryAll +where + St: TryStream, + F: FnMut(St::Ok) -> Fut, + Fut: Future, +{ + pub(super) fn new(stream: St, f: F) -> Self { + Self { stream, f, done: false, future: None } + } +} + +impl FusedFuture for TryAll +where + St: TryStream, + F: FnMut(St::Ok) -> Fut, + Fut: Future, +{ + fn is_terminated(&self) -> bool { + self.done && self.future.is_none() + } +} + +impl Future for TryAll +where + St: TryStream, + F: FnMut(St::Ok) -> Fut, + Fut: Future, +{ + type Output = Result; + + fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let mut this = self.project(); + + Poll::Ready(loop { + if let Some(fut) = this.future.as_mut().as_pin_mut() { + // we're currently processing a future to produce a new value + let acc = ready!(fut.poll(cx)); + this.future.set(None); + if !acc { + *this.done = true; + break Ok(false); + } // early exit + } else if !*this.done { + // we're waiting on a new item from the stream + match ready!(this.stream.as_mut().try_poll_next(cx)) { + Some(Ok(item)) => { + this.future.set(Some((this.f)(item))); + } + Some(Err(err)) => { + *this.done = true; + break Err(err); + } + None => { + *this.done = true; + break Ok(true); + } + } + } else { + panic!("TryAll polled after completion") + } + }) + } +} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_any.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_any.rs new file mode 100644 index 000000000000..55e876be0513 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_any.rs @@ -0,0 +1,98 @@ +use core::fmt; +use core::pin::Pin; +use futures_core::future::{FusedFuture, Future}; +use futures_core::ready; +use futures_core::stream::TryStream; +use futures_core::task::{Context, Poll}; +use pin_project_lite::pin_project; + +pin_project! { + /// Future for the [`try_any`](super::TryStreamExt::try_any) method. + #[must_use = "futures do nothing unless you `.await` or poll them"] + pub struct TryAny { + #[pin] + stream: St, + f: F, + done: bool, + #[pin] + future: Option, + } +} + +impl fmt::Debug for TryAny +where + St: fmt::Debug, + Fut: fmt::Debug, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("TryAny") + .field("stream", &self.stream) + .field("done", &self.done) + .field("future", &self.future) + .finish() + } +} + +impl TryAny +where + St: TryStream, + F: FnMut(St::Ok) -> Fut, + Fut: Future, +{ + pub(super) fn new(stream: St, f: F) -> Self { + Self { stream, f, done: false, future: None } + } +} + +impl FusedFuture for TryAny +where + St: TryStream, + F: FnMut(St::Ok) -> Fut, + Fut: Future, +{ + fn is_terminated(&self) -> bool { + self.done && self.future.is_none() + } +} + +impl Future for TryAny +where + St: TryStream, + F: FnMut(St::Ok) -> Fut, + Fut: Future, +{ + type Output = Result; + + fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let mut this = self.project(); + + Poll::Ready(loop { + if let Some(fut) = this.future.as_mut().as_pin_mut() { + // we're currently processing a future to produce a new value + let acc = ready!(fut.poll(cx)); + this.future.set(None); + if acc { + *this.done = true; + break Ok(true); + } // early exit + } else if !*this.done { + // we're waiting on a new item from the stream + match ready!(this.stream.as_mut().try_poll_next(cx)) { + Some(Ok(item)) => { + this.future.set(Some((this.f)(item))); + } + Some(Err(err)) => { + *this.done = true; + break Err(err); + } + None => { + *this.done = true; + break Ok(false); + } + } + } else { + panic!("TryAny polled after completion") + } + }) + } +} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_buffer_unordered.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_buffer_unordered.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_buffer_unordered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_buffer_unordered.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_buffered.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_buffered.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_buffered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_buffered.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_chunks.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_chunks.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_chunks.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_chunks.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_collect.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_collect.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_collect.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_collect.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_concat.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_concat.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_concat.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_concat.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_filter.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_filter.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_filter.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_filter.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_filter_map.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_filter_map.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_filter_map.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_filter_map.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_flatten.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_flatten.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_flatten.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_flatten.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_flatten_unordered.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_flatten_unordered.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_flatten_unordered.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_flatten_unordered.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_fold.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_fold.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_fold.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_fold.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_for_each.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_for_each.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_for_each.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_for_each.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_for_each_concurrent.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_for_each_concurrent.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_for_each_concurrent.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_for_each_concurrent.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_next.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_next.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_next.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_next.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_ready_chunks.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_ready_chunks.rs new file mode 100644 index 000000000000..8b1470ea26b3 --- /dev/null +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_ready_chunks.rs @@ -0,0 +1,126 @@ +use crate::stream::{Fuse, IntoStream, StreamExt}; + +use alloc::vec::Vec; +use core::fmt; +use core::pin::Pin; +use futures_core::stream::{FusedStream, Stream, TryStream}; +use futures_core::task::{Context, Poll}; +#[cfg(feature = "sink")] +use futures_sink::Sink; +use pin_project_lite::pin_project; + +pin_project! { + /// Stream for the [`try_ready_chunks`](super::TryStreamExt::try_ready_chunks) method. + #[derive(Debug)] + #[must_use = "streams do nothing unless polled"] + pub struct TryReadyChunks { + #[pin] + stream: Fuse>, + cap: usize, // https://github.com/rust-lang/futures-rs/issues/1475 + } +} + +impl TryReadyChunks { + pub(super) fn new(stream: St, capacity: usize) -> Self { + assert!(capacity > 0); + + Self { stream: IntoStream::new(stream).fuse(), cap: capacity } + } + + delegate_access_inner!(stream, St, (. .)); +} + +type TryReadyChunksStreamError = + TryReadyChunksError<::Ok, ::Error>; + +impl Stream for TryReadyChunks { + type Item = Result, TryReadyChunksStreamError>; + + fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let mut this = self.as_mut().project(); + + let mut items: Vec = Vec::new(); + + loop { + match this.stream.as_mut().poll_next(cx) { + // Flush all the collected data if the underlying stream doesn't + // contain more ready values + Poll::Pending => { + return if items.is_empty() { + Poll::Pending + } else { + Poll::Ready(Some(Ok(items))) + } + } + + // Push the ready item into the buffer and check whether it is full. + // If so, return the buffer. + Poll::Ready(Some(Ok(item))) => { + if items.is_empty() { + items.reserve_exact(*this.cap); + } + items.push(item); + if items.len() >= *this.cap { + return Poll::Ready(Some(Ok(items))); + } + } + + // Return the already collected items and the error. + Poll::Ready(Some(Err(e))) => { + return Poll::Ready(Some(Err(TryReadyChunksError(items, e)))); + } + + // Since the underlying stream ran out of values, return what we + // have buffered, if we have anything. + Poll::Ready(None) => { + let last = if items.is_empty() { None } else { Some(Ok(items)) }; + return Poll::Ready(last); + } + } + } + } + + fn size_hint(&self) -> (usize, Option) { + let (lower, upper) = self.stream.size_hint(); + let lower = lower / self.cap; + (lower, upper) + } +} + +impl FusedStream for TryReadyChunks { + fn is_terminated(&self) -> bool { + self.stream.is_terminated() + } +} + +// Forwarding impl of Sink from the underlying stream +#[cfg(feature = "sink")] +impl Sink for TryReadyChunks +where + S: TryStream + Sink, +{ + type Error = >::Error; + + delegate_sink!(stream, Item); +} + +/// Error indicating, that while chunk was collected inner stream produced an error. +/// +/// Contains all items that were collected before an error occurred, and the stream error itself. +#[derive(PartialEq, Eq)] +pub struct TryReadyChunksError(pub Vec, pub E); + +impl fmt::Debug for TryReadyChunksError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + self.1.fmt(f) + } +} + +impl fmt::Display for TryReadyChunksError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + self.1.fmt(f) + } +} + +#[cfg(feature = "std")] +impl std::error::Error for TryReadyChunksError {} diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_skip_while.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_skip_while.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_skip_while.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_skip_while.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_take_while.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_take_while.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_take_while.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_take_while.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_unfold.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_unfold.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_unfold.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_unfold.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/unfold.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/unfold.rs similarity index 98% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/unfold.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/unfold.rs index 7d8ef6babc44..2f48cccb4462 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/unfold.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/unfold.rs @@ -36,7 +36,7 @@ use pin_project_lite::pin_project; /// let stream = stream::unfold(0, |state| async move { /// if state <= 2 { /// let next_state = state + 1; -/// let yielded = state * 2; +/// let yielded = state * 2; /// Some((yielded, next_state)) /// } else { /// None diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/task/mod.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/task/mod.rs similarity index 76% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/task/mod.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/task/mod.rs index 0a31eeac144c..7a9e993e5e5d 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/task/mod.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/task/mod.rs @@ -18,19 +18,22 @@ pub use futures_task::{FutureObj, LocalFutureObj, LocalSpawn, Spawn, SpawnError, pub use futures_task::noop_waker; pub use futures_task::noop_waker_ref; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use futures_task::ArcWake; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use futures_task::waker; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))] #[cfg(feature = "alloc")] pub use futures_task::{waker_ref, WakerRef}; -#[cfg(not(futures_no_atomic_cas))] +#[cfg_attr( + target_os = "none", + cfg(any(target_has_atomic = "ptr", feature = "portable-atomic")) +)] pub use futures_core::task::__internal::AtomicWaker; mod spawn; diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/task/spawn.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/task/spawn.rs similarity index 100% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/task/spawn.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/task/spawn.rs diff --git a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/unfold_state.rs b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/unfold_state.rs similarity index 91% rename from third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/unfold_state.rs rename to third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/unfold_state.rs index 0edc15e43740..b66956bbd8f9 100644 --- a/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/unfold_state.rs +++ b/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/unfold_state.rs @@ -29,7 +29,7 @@ impl UnfoldState { pub(crate) fn take_value(self: Pin<&mut Self>) -> Option { match &*self { - UnfoldState::Value { .. } => match self.project_replace(UnfoldState::Empty) { + Self::Value { .. } => match self.project_replace(Self::Empty) { UnfoldStateProjReplace::Value { value } => Some(value), _ => unreachable!(), }, diff --git a/third_party/rust/futures/v0_3/BUILD.gn b/third_party/rust/futures/v0_3/BUILD.gn index d777abb1e57e..720755184972 100644 --- a/third_party/rust/futures/v0_3/BUILD.gn +++ b/third_party/rust/futures/v0_3/BUILD.gn @@ -12,13 +12,13 @@ cargo_crate("lib") { crate_name = "futures" epoch = "0.3" crate_type = "rlib" - crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/src/lib.rs" - sources = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/src/lib.rs" ] + crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/src/lib.rs" + sources = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/src/lib.rs" ] inputs = [] build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.3.27" + cargo_pkg_version = "0.3.31" cargo_pkg_name = "futures" cargo_pkg_description = "An implementation of futures and streams featuring zero allocations, composability, and iterator-like interfaces." library_configs -= [ "//build/config/compiler:chromium_code" ] diff --git a/third_party/rust/futures/v0_3/README.chromium b/third_party/rust/futures/v0_3/README.chromium index d06ea12348c1..4e11ac0dd899 100644 --- a/third_party/rust/futures/v0_3/README.chromium +++ b/third_party/rust/futures/v0_3/README.chromium @@ -1,9 +1,9 @@ Name: futures URL: https://crates.io/crates/futures -Version: 0.3.27 -Revision: cfc501c9c7ef53c531ed43533bb02845f65ff79e +Version: 0.3.31 +Revision: 1e052816b09890925cfdfcbe8d390cdaae5e4c38 License: Apache-2.0 -License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-0.3.27/LICENSE-APACHE +License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-0.3.31/LICENSE-APACHE Shipped: yes Security Critical: yes diff --git a/third_party/rust/futures_channel/v0_3/BUILD.gn b/third_party/rust/futures_channel/v0_3/BUILD.gn index c556eb287caf..4f687f421ca4 100644 --- a/third_party/rust/futures_channel/v0_3/BUILD.gn +++ b/third_party/rust/futures_channel/v0_3/BUILD.gn @@ -12,20 +12,20 @@ cargo_crate("lib") { crate_name = "futures_channel" epoch = "0.3" crate_type = "rlib" - crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/lib.rs" + crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/lib.rs" sources = [ - "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/lib.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/lock.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/mpsc/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/mpsc/queue.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/mpsc/sink_impl.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/oneshot.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/lib.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/lock.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/mpsc/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/mpsc/queue.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/mpsc/sink_impl.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/src/oneshot.rs", ] - inputs = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/../no_atomic_cas.rs" ] + inputs = [] build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.3.27" + cargo_pkg_version = "0.3.31" cargo_pkg_name = "futures-channel" cargo_pkg_description = "Channels for asynchronous communication using futures-rs." @@ -45,9 +45,6 @@ cargo_crate("lib") { "sink", "std", ] - build_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/build.rs" - build_sources = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/build.rs" ] - build_script_inputs = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/src/../no_atomic_cas.rs" ] rustflags = [ "--cap-lints=allow", # Suppress all warnings in crates.io crates ] diff --git a/third_party/rust/futures_channel/v0_3/README.chromium b/third_party/rust/futures_channel/v0_3/README.chromium index 4fa05a9c8c5d..d995e2794966 100644 --- a/third_party/rust/futures_channel/v0_3/README.chromium +++ b/third_party/rust/futures_channel/v0_3/README.chromium @@ -1,9 +1,9 @@ Name: futures-channel URL: https://crates.io/crates/futures-channel -Version: 0.3.27 -Revision: cfc501c9c7ef53c531ed43533bb02845f65ff79e +Version: 0.3.31 +Revision: 1e052816b09890925cfdfcbe8d390cdaae5e4c38 License: Apache-2.0 -License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.27/LICENSE-APACHE +License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-channel-0.3.31/LICENSE-APACHE Shipped: yes Security Critical: yes diff --git a/third_party/rust/futures_core/v0_3/BUILD.gn b/third_party/rust/futures_core/v0_3/BUILD.gn index 4a1b2717fc27..e789246787b9 100644 --- a/third_party/rust/futures_core/v0_3/BUILD.gn +++ b/third_party/rust/futures_core/v0_3/BUILD.gn @@ -12,21 +12,21 @@ cargo_crate("lib") { crate_name = "futures_core" epoch = "0.3" crate_type = "rlib" - crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/lib.rs" + crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/lib.rs" sources = [ - "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/future.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/lib.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/stream.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/__internal/atomic_waker.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/__internal/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/task/poll.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/future.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/lib.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/stream.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/__internal/atomic_waker.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/__internal/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/src/task/poll.rs", ] - inputs = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/../no_atomic_cas.rs" ] + inputs = [] build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.3.27" + cargo_pkg_version = "0.3.31" cargo_pkg_name = "futures-core" cargo_pkg_description = "The core traits and types in for the `futures` library." @@ -40,9 +40,6 @@ cargo_crate("lib") { "alloc", "std", ] - build_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/build.rs" - build_sources = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/build.rs" ] - build_script_inputs = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/src/../no_atomic_cas.rs" ] rustflags = [ "--cap-lints=allow", # Suppress all warnings in crates.io crates ] diff --git a/third_party/rust/futures_core/v0_3/README.chromium b/third_party/rust/futures_core/v0_3/README.chromium index 820164c197c7..d610d959524a 100644 --- a/third_party/rust/futures_core/v0_3/README.chromium +++ b/third_party/rust/futures_core/v0_3/README.chromium @@ -1,9 +1,9 @@ Name: futures-core URL: https://crates.io/crates/futures-core -Version: 0.3.27 -Revision: cfc501c9c7ef53c531ed43533bb02845f65ff79e +Version: 0.3.31 +Revision: 1e052816b09890925cfdfcbe8d390cdaae5e4c38 License: Apache-2.0 -License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.27/LICENSE-APACHE +License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-core-0.3.31/LICENSE-APACHE Shipped: yes Security Critical: yes diff --git a/third_party/rust/futures_executor/v0_3/BUILD.gn b/third_party/rust/futures_executor/v0_3/BUILD.gn index 4f29ea9c7f06..51ca283d874f 100644 --- a/third_party/rust/futures_executor/v0_3/BUILD.gn +++ b/third_party/rust/futures_executor/v0_3/BUILD.gn @@ -12,19 +12,19 @@ cargo_crate("lib") { crate_name = "futures_executor" epoch = "0.3" crate_type = "rlib" - crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/lib.rs" + crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/lib.rs" sources = [ - "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/enter.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/lib.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/local_pool.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/thread_pool.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/src/unpark_mutex.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/enter.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/lib.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/local_pool.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/thread_pool.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/src/unpark_mutex.rs", ] inputs = [] build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.3.27" + cargo_pkg_version = "0.3.31" cargo_pkg_name = "futures-executor" cargo_pkg_description = "Executors for asynchronous tasks based on the futures-rs library." diff --git a/third_party/rust/futures_executor/v0_3/README.chromium b/third_party/rust/futures_executor/v0_3/README.chromium index a5f5d795cabc..f5eba1e2e650 100644 --- a/third_party/rust/futures_executor/v0_3/README.chromium +++ b/third_party/rust/futures_executor/v0_3/README.chromium @@ -1,9 +1,9 @@ Name: futures-executor URL: https://crates.io/crates/futures-executor -Version: 0.3.27 -Revision: cfc501c9c7ef53c531ed43533bb02845f65ff79e +Version: 0.3.31 +Revision: 1e052816b09890925cfdfcbe8d390cdaae5e4c38 License: Apache-2.0 -License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.27/LICENSE-APACHE +License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-executor-0.3.31/LICENSE-APACHE Shipped: yes Security Critical: yes diff --git a/third_party/rust/futures_io/v0_3/BUILD.gn b/third_party/rust/futures_io/v0_3/BUILD.gn index 8f911d7523d0..6fbea1134de6 100644 --- a/third_party/rust/futures_io/v0_3/BUILD.gn +++ b/third_party/rust/futures_io/v0_3/BUILD.gn @@ -12,13 +12,13 @@ cargo_crate("lib") { crate_name = "futures_io" epoch = "0.3" crate_type = "rlib" - crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/src/lib.rs" - sources = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/src/lib.rs" ] + crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/src/lib.rs" + sources = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/src/lib.rs" ] inputs = [] build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.3.27" + cargo_pkg_version = "0.3.31" cargo_pkg_name = "futures-io" cargo_pkg_description = "The `AsyncRead`, `AsyncWrite`, `AsyncSeek`, and `AsyncBufRead` traits for the futures-rs library." library_configs -= [ "//build/config/compiler:chromium_code" ] diff --git a/third_party/rust/futures_io/v0_3/README.chromium b/third_party/rust/futures_io/v0_3/README.chromium index 26f0b9ef8731..8f3dd40063c4 100644 --- a/third_party/rust/futures_io/v0_3/README.chromium +++ b/third_party/rust/futures_io/v0_3/README.chromium @@ -1,9 +1,9 @@ Name: futures-io URL: https://crates.io/crates/futures-io -Version: 0.3.27 -Revision: cfc501c9c7ef53c531ed43533bb02845f65ff79e +Version: 0.3.31 +Revision: 1e052816b09890925cfdfcbe8d390cdaae5e4c38 License: Apache-2.0 -License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.27/LICENSE-APACHE +License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-io-0.3.31/LICENSE-APACHE Shipped: yes Security Critical: yes diff --git a/third_party/rust/futures_macro/v0_3/BUILD.gn b/third_party/rust/futures_macro/v0_3/BUILD.gn index a681500837b1..53b2327dfabb 100644 --- a/third_party/rust/futures_macro/v0_3/BUILD.gn +++ b/third_party/rust/futures_macro/v0_3/BUILD.gn @@ -12,19 +12,19 @@ cargo_crate("lib") { crate_name = "futures_macro" epoch = "0.3" crate_type = "proc-macro" - crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/lib.rs" + crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/lib.rs" sources = [ - "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/executor.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/join.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/lib.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/select.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/src/stream_select.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/executor.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/join.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/lib.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/select.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/src/stream_select.rs", ] inputs = [] build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.3.27" + cargo_pkg_version = "0.3.31" cargo_pkg_name = "futures-macro" cargo_pkg_description = "The futures-rs procedural macro implementations." library_configs -= [ "//build/config/compiler:chromium_code" ] @@ -36,7 +36,7 @@ cargo_crate("lib") { deps = [ "//brave/third_party/rust/proc_macro2/v1:lib", "//brave/third_party/rust/quote/v1:lib", - "//brave/third_party/rust/syn/v1:lib", + "//brave/third_party/rust/syn/v2:lib", ] rustflags = [ "--cap-lints=allow", # Suppress all warnings in crates.io crates diff --git a/third_party/rust/futures_macro/v0_3/README.chromium b/third_party/rust/futures_macro/v0_3/README.chromium index c02dba1370ce..7b5afe5b7497 100644 --- a/third_party/rust/futures_macro/v0_3/README.chromium +++ b/third_party/rust/futures_macro/v0_3/README.chromium @@ -1,9 +1,9 @@ Name: futures-macro URL: https://crates.io/crates/futures-macro -Version: 0.3.27 -Revision: cfc501c9c7ef53c531ed43533bb02845f65ff79e +Version: 0.3.31 +Revision: 1e052816b09890925cfdfcbe8d390cdaae5e4c38 License: Apache-2.0 -License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.27/LICENSE-APACHE +License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-macro-0.3.31/LICENSE-APACHE Shipped: yes Security Critical: yes diff --git a/third_party/rust/futures_sink/v0_3/BUILD.gn b/third_party/rust/futures_sink/v0_3/BUILD.gn index 5a20783ee455..39defd56777a 100644 --- a/third_party/rust/futures_sink/v0_3/BUILD.gn +++ b/third_party/rust/futures_sink/v0_3/BUILD.gn @@ -12,13 +12,13 @@ cargo_crate("lib") { crate_name = "futures_sink" epoch = "0.3" crate_type = "rlib" - crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/src/lib.rs" - sources = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/src/lib.rs" ] + crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/src/lib.rs" + sources = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/src/lib.rs" ] inputs = [] build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.3.27" + cargo_pkg_version = "0.3.31" cargo_pkg_name = "futures-sink" cargo_pkg_description = "The asynchronous `Sink` trait for the futures-rs library." diff --git a/third_party/rust/futures_sink/v0_3/README.chromium b/third_party/rust/futures_sink/v0_3/README.chromium index 6b5759991889..811ffdafd2b4 100644 --- a/third_party/rust/futures_sink/v0_3/README.chromium +++ b/third_party/rust/futures_sink/v0_3/README.chromium @@ -1,9 +1,9 @@ Name: futures-sink URL: https://crates.io/crates/futures-sink -Version: 0.3.27 -Revision: cfc501c9c7ef53c531ed43533bb02845f65ff79e +Version: 0.3.31 +Revision: 1e052816b09890925cfdfcbe8d390cdaae5e4c38 License: Apache-2.0 -License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.27/LICENSE-APACHE +License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-sink-0.3.31/LICENSE-APACHE Shipped: yes Security Critical: yes diff --git a/third_party/rust/futures_task/v0_3/BUILD.gn b/third_party/rust/futures_task/v0_3/BUILD.gn index c71881469e66..a66652f9ae5b 100644 --- a/third_party/rust/futures_task/v0_3/BUILD.gn +++ b/third_party/rust/futures_task/v0_3/BUILD.gn @@ -12,21 +12,21 @@ cargo_crate("lib") { crate_name = "futures_task" epoch = "0.3" crate_type = "rlib" - crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/lib.rs" + crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/lib.rs" sources = [ - "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/arc_wake.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/future_obj.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/lib.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/noop_waker.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/spawn.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/waker.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/waker_ref.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/arc_wake.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/future_obj.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/lib.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/noop_waker.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/spawn.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/waker.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/src/waker_ref.rs", ] - inputs = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/../no_atomic_cas.rs" ] + inputs = [] build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.3.27" + cargo_pkg_version = "0.3.31" cargo_pkg_name = "futures-task" cargo_pkg_description = "Tools for working with tasks." library_configs -= [ "//build/config/compiler:chromium_code" ] @@ -39,9 +39,6 @@ cargo_crate("lib") { "alloc", "std", ] - build_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/build.rs" - build_sources = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/build.rs" ] - build_script_inputs = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/src/../no_atomic_cas.rs" ] rustflags = [ "--cap-lints=allow", # Suppress all warnings in crates.io crates ] diff --git a/third_party/rust/futures_task/v0_3/README.chromium b/third_party/rust/futures_task/v0_3/README.chromium index 4cff68035afa..a4a05ff1b6dc 100644 --- a/third_party/rust/futures_task/v0_3/README.chromium +++ b/third_party/rust/futures_task/v0_3/README.chromium @@ -1,9 +1,9 @@ Name: futures-task URL: https://crates.io/crates/futures-task -Version: 0.3.27 -Revision: cfc501c9c7ef53c531ed43533bb02845f65ff79e +Version: 0.3.31 +Revision: 1e052816b09890925cfdfcbe8d390cdaae5e4c38 License: Apache-2.0 -License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.27/LICENSE-APACHE +License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-task-0.3.31/LICENSE-APACHE Shipped: yes Security Critical: yes diff --git a/third_party/rust/futures_util/v0_3/BUILD.gn b/third_party/rust/futures_util/v0_3/BUILD.gn index 09ed27a0b850..4f35a9d69b12 100644 --- a/third_party/rust/futures_util/v0_3/BUILD.gn +++ b/third_party/rust/futures_util/v0_3/BUILD.gn @@ -12,191 +12,195 @@ cargo_crate("lib") { crate_name = "futures_util" epoch = "0.3" crate_type = "rlib" - crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lib.rs" + crate_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lib.rs" sources = [ - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/abortable.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/join_mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/pending.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/poll.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/random.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/select_mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/async_await/stream_select_mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/compat01as03.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/compat03as01.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/executor.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/compat/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/fns.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/abortable.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/either.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/catch_unwind.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/flatten.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/fuse.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/map.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/remote_handle.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/future/shared.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/join.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/join_all.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/lazy.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/maybe_done.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/option.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/pending.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/poll_fn.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/poll_immediate.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/ready.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/select.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/select_all.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/select_ok.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/into_future.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/try_flatten.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_future/try_flatten_err.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_join.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_join_all.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_maybe_done.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/future/try_select.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/allow_std.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/buf_reader.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/buf_writer.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/chain.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/close.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/copy.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/copy_buf.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/copy_buf_abortable.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/cursor.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/empty.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/fill_buf.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/flush.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/into_sink.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/line_writer.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/lines.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_exact.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_line.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_to_end.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_to_string.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_until.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/read_vectored.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/repeat.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/seek.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/sink.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/split.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/take.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/window.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write_all.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write_all_vectored.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/io/write_vectored.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lib.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/bilock.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/lock/mutex.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/never.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/buffer.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/close.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/drain.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/err_into.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/fanout.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/feed.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/flush.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/map_err.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/send.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/send_all.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/unfold.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/with.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/sink/with_flat_map.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/abortable.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/empty.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_ordered.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/abort.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/iter.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/ready_to_run_queue.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/futures_unordered/task.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/iter.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/once.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/pending.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/poll_fn.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/poll_immediate.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/repeat.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/repeat_with.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/select.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/select_all.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/select_with_strategy.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/all.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/any.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/buffer_unordered.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/buffered.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/catch_unwind.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/chain.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/chunks.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/collect.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/concat.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/count.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/cycle.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/enumerate.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/filter.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/filter_map.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/flatten.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/flatten_unordered.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/fold.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/for_each.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/for_each_concurrent.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/forward.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/fuse.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/into_future.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/map.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/next.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/peek.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/ready_chunks.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/scan.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/select_next_some.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/skip.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/skip_while.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/split.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/take.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/take_until.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/take_while.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/then.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/unzip.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/stream/zip.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/and_then.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/into_async_read.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/into_stream.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/or_else.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_buffer_unordered.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_buffered.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_chunks.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_collect.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_concat.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_filter.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_filter_map.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_flatten.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_flatten_unordered.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_fold.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_for_each.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_for_each_concurrent.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_next.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_skip_while.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_take_while.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/try_stream/try_unfold.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/stream/unfold.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/task/mod.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/task/spawn.rs", - "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/unfold_state.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/abortable.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/join_mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/pending.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/poll.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/random.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/select_mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/async_await/stream_select_mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/compat01as03.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/compat03as01.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/executor.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/compat/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/fns.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/abortable.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/always_ready.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/either.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/catch_unwind.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/flatten.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/fuse.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/map.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/remote_handle.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/future/shared.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/join.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/join_all.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/lazy.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/maybe_done.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/option.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/pending.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/poll_fn.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/poll_immediate.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/ready.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/select.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/select_all.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/select_ok.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/into_future.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/try_flatten.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_future/try_flatten_err.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_join.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_join_all.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_maybe_done.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/future/try_select.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/allow_std.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/buf_reader.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/buf_writer.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/chain.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/close.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/copy.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/copy_buf.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/copy_buf_abortable.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/cursor.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/empty.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/fill_buf.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/flush.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/into_sink.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/line_writer.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/lines.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_exact.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_line.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_to_end.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_to_string.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_until.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/read_vectored.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/repeat.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/seek.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/sink.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/split.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/take.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/window.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write_all.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write_all_vectored.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/io/write_vectored.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lib.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/bilock.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/lock/mutex.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/never.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/buffer.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/close.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/drain.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/err_into.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/fanout.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/feed.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/flush.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/map_err.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/send.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/send_all.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/unfold.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/with.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/sink/with_flat_map.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/abortable.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/empty.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_ordered.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/abort.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/iter.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/ready_to_run_queue.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/futures_unordered/task.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/iter.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/once.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/pending.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/poll_fn.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/poll_immediate.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/repeat.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/repeat_with.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/select.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/select_all.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/select_with_strategy.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/all.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/any.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/buffer_unordered.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/buffered.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/catch_unwind.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/chain.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/chunks.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/collect.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/concat.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/count.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/cycle.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/enumerate.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/filter.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/filter_map.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/flatten.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/flatten_unordered.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/fold.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/for_each.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/for_each_concurrent.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/forward.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/fuse.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/into_future.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/map.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/next.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/peek.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/ready_chunks.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/scan.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/select_next_some.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/skip.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/skip_while.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/split.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/take.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/take_until.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/take_while.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/then.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/unzip.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/stream/zip.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/and_then.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/into_async_read.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/into_stream.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/or_else.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_all.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_any.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_buffer_unordered.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_buffered.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_chunks.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_collect.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_concat.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_filter.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_filter_map.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_flatten.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_flatten_unordered.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_fold.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_for_each.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_for_each_concurrent.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_next.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_ready_chunks.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_skip_while.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_take_while.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/try_stream/try_unfold.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/stream/unfold.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/task/mod.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/task/spawn.rs", + "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/src/unfold_state.rs", ] - inputs = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/../no_atomic_cas.rs" ] + inputs = [] build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.3.27" + cargo_pkg_version = "0.3.31" cargo_pkg_name = "futures-util" cargo_pkg_description = "Common utilities and extension traits for the futures-rs library." @@ -233,9 +237,6 @@ cargo_crate("lib") { "slab", "std", ] - build_root = "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/build.rs" - build_sources = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/build.rs" ] - build_script_inputs = [ "//brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/src/../no_atomic_cas.rs" ] rustflags = [ "--cap-lints=allow", # Suppress all warnings in crates.io crates ] diff --git a/third_party/rust/futures_util/v0_3/README.chromium b/third_party/rust/futures_util/v0_3/README.chromium index 28a87a492716..51dac8cd77f1 100644 --- a/third_party/rust/futures_util/v0_3/README.chromium +++ b/third_party/rust/futures_util/v0_3/README.chromium @@ -1,9 +1,9 @@ Name: futures-util URL: https://crates.io/crates/futures-util -Version: 0.3.27 -Revision: cfc501c9c7ef53c531ed43533bb02845f65ff79e +Version: 0.3.31 +Revision: 1e052816b09890925cfdfcbe8d390cdaae5e4c38 License: Apache-2.0 -License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.27/LICENSE-APACHE +License File: //brave/third_party/rust/chromium_crates_io/vendor/futures-util-0.3.31/LICENSE-APACHE Shipped: yes Security Critical: yes