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

wboayue / rust-ibapi / 25650068749
92%

Build:
DEFAULT BRANCH: main
Ran 11 May 2026 04:20AM UTC
Jobs 1
Files 127
Run time 1min
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

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)

87 of 105 new or added lines in 5 files covered. (82.86%)

2 existing lines in 2 files now uncovered.

18416 of 20554 relevant lines covered (89.6%)

25.21 hits per line

Uncovered Changes

Lines Coverage ∆ File
5
94.83
-2.32% src/subscriptions/async.rs
5
78.44
-0.17% src/transport/async.rs
3
92.5
-3.89% src/display_groups/async.rs
3
0.0
0.0% src/orders/builder/async_impl.rs
2
82.5
0.0% src/orders/async/mod.rs

Coverage Regressions

Lines Coverage ∆ File
1
61.41
0.0% src/contracts/types.rs
1
87.77
-0.18% src/transport/sync/mod.rs
Jobs
ID Job ID Ran Files Coverage
1 25650068749.1 11 May 2026 04:20AM UTC 127
89.6
GitHub Action Run
Source Files on build 25650068749
  • Tree
  • List 127
  • Changed 14
  • Source Changed 12
  • Coverage Changed 12
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25650068749
  • 29e304c9 on github
  • Prev Build on main (#25639429621)
  • Next Build on main (#25650196934)
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