rusty_feeder/exchange/binance/common/
messages.rs

1//! Common WebSocket message structures for Binance.
2
3use serde::Deserialize;
4use simd_json::OwnedValue;
5
6/// Represents a generic WebSocket response from Binance.
7///
8/// This enum uses `serde(untagged)` to efficiently deserialize different
9/// JSON structures into either a specific data payload `T` or a generic
10/// subscription confirmation message.
11#[derive(Deserialize)]
12#[serde(untagged)]
13pub enum BinanceWebsocketResponse<T> {
14    /// A regular data message (e.g., trade, order book update).
15    Data(T),
16    /// A subscription confirmation or error response.
17    Confirmation(SubscriptionResult),
18}
19
20/// Represents the structure of a subscription confirmation message.
21#[derive(Deserialize, Debug)]
22pub struct SubscriptionResult {
23    /// The result of the subscription, often `null` on success.
24    pub result: Option<OwnedValue>,
25    /// The identifier of the subscription request.
26    pub id: Option<u64>,
27}