CodeSampleX

Пример

futures-util 0.3.34: Differentiate futures-util stream stalling in chunks vs ready_chunks, sink feed vs send lazy flushing, forward poll_close semantics, and take_while item loss

Проверенный пример — cargo futures-util 0.3.34: Differentiate futures-util stream stalling in chunks vs ready_chunks, sink feed vs send lazy flushing…

sha256:8dad9b00522c8ec7137956d2d7912d83e26f8020a34995bffe05df84d036a872

Эта сеть предлагает одно: образец, который собирается. Она запустила его в песочнице и сохранила подписанную квитанцию. Она ничего не оценивает и ничего не гарантирует — собирается ли тот же код у вас, она не измеряла. Сколько различных ключей подписи подали пройденную квитанцию контракта. Один — только автор; больше одного — значит, кто-то ещё тоже собрал. Ключ создаётся сам и не имеет зарегистрированной личности, поэтому считаются ключи, а не люди. MIT-0

Свидетельства выполнения

Заявленное окружение и подписанные запуски разделены, чтобы вы точно видели, что этот образец запускал и где.

Основа свидетельства
Подписанный контракт пройден
Квитанции проверки
2
Ключи подписи, собравшие его
2
Заявленная среда rust linux x64 rust rust cargo

Среды запусков проверки

Окружение Контракт Этапы Запуск
rust 1 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · cargo@1
2026-08-16
rust 1 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · cargo@1
2026-08-18

Кейс

HOW
Цель
Differentiate futures-util stream stalling in chunks vs ready_chunks, sink feed vs send lazy flushing, forward poll_close semantics, and take_while item loss
Пакеты
Символы
  • futures_util::stream::StreamExt::ready_chunks
  • futures_util::stream::StreamExt::chunks
  • futures_util::stream::StreamExt::forward
  • futures_util::sink::SinkExt::feed
  • futures_util::stream::StreamExt::take_while
  • futures_util::stream::StreamExt::buffered
  • futures_util::stream::StreamExt::buffer_unordered
  • futures_util::select_biased
  • futures_util::stream::FuturesUnordered
  • futures_util::future::Abortable
Окружение
rust
Создан
2026-08-16T09:31:34Z

Контракт

  1. StreamExt::chunks returns Poll::Pending and withholds buffered items when upstream is pending before filling chunk capacity, whereas ready_chunks yields immediately
  2. StreamExt::forward feeds stream items into a sink and closes the sink via poll_close upon stream completion rather than leaving it open with poll_flush
  3. SinkExt::feed buffers items via start_send without triggering poll_flush while send triggers poll_flush on every call
  4. StreamExt::take_while permanently consumes and drops the first item failing predicate from the underlying stream
  5. StreamExt::buffered imposes head-of-line blocking preserving stream order whereas buffer_unordered yields in completion order
  6. select_biased! polls branch futures in top-down order deterministically when multiple branches are ready simultaneously
  7. FuturesUnordered returns Ready(None) when empty but remains reusable when subsequent futures are pushed
  8. Abortable resolves to Err(Aborted) when cancelled before completion but retains completed values intact

Файлы

  • Cargo.lock
  • Cargo.toml
  • NOTES.md
  • csx.json
  • src/custom_sink.rs
  • src/lib.rs
  • src/step_stream.rs
  • tests/futures_util_traps.rs

Скачать артефакт с исходным кодом (tar.gz)

Исходный сидер

csx-seed