• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wboayue / rust-ibapi / 25650068749 / 1
92%
main: 92%

Build:
DEFAULT BRANCH: main
Ran 11 May 2026 04:20AM UTC
Files 127
Run time 3s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

11 May 2026 04:19AM UTC coverage: 89.598% (-0.07%) from 89.664%
25650068749.1

push

github

web-flow
subscriptions: impl Stream for async Subscription<T> (#550)

* subscriptions: impl Stream for async Subscription<T>

Standardizes the async consumer interface on futures::Stream. Sync side
stays unchanged (IntoIterator + inherent next/iter*).

Plan: plans/standardize-streaming-consumer.md (v3-api-ergonomics §2).

Changes
-------
- impl<T: Send + 'static> Stream for Subscription<T> in
  src/subscriptions/async.rs. Item = Result<SubscriptionItem<T>, Error>.
  poll_next drains the inner channel synchronously while items are
  ready, applying Skip without re-yielding to the executor between
  immediately-available items. Subscription<T> is auto-Unpin (every
  field is Unpin; BroadcastStream uses ReusableBoxFuture, a boxed pin
  inside).
- Drop inherent Subscription::next / next_data / stream / data_stream.
  StreamExt::next replaces them at every call site; the deleted note
  at line 387-391 (broadcast::Receiver doesn't expose poll_recv) is
  now obsolete since BroadcastStream encapsulates that state machine.
- FilterDataStream<S> + SubscriptionItemStreamExt trait mirror the
  sync FilterData<I> + SubscriptionItemIterExt. filter_data drops
  Notice items (logged at warn) and yields the underlying
  Result<T, Error>. Re-exported from subscriptions and prelude.
- AsyncInternalSubscription holds a BroadcastStream<RoutedItem> (polled
  by Subscription::poll_next) plus a template_receiver kept only so
  Clone can resubscribe. Subtle: the original receiver feeds the
  stream, not a resubscribe() -- resubscribe() positions a new
  receiver at the broadcast channel current tail, missing any messages
  already queued. test_head_timestamp caught this in CI before merge.
- AsyncInternalSubscription::next_routed gated cfg(test) (only
  transport/async_tests.rs stub fixtures call it now).
- New test fixture: try_next_routed (also cfg(test)) replaces the
  9 receiver.try_recv() peeks tests used to assert no-cross-talk.
- Collapse the three pass-through constructors (wi... (continued)

18416 of 20554 relevant lines covered (89.6%)

25.21 hits per line

Source Files on job 25650068749.1
  • Tree
  • List 127
  • Changed 14
  • Source Changed 12
  • Coverage Changed 12
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 25650068749
  • 29e304c9 on github
  • Prev Job for on main (#25639429621.1)
  • Next Job for on main (#25650196934.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc