Skip to main content

qubit_http/sse/
sse_chunk.rs

1/*******************************************************************************
2 *
3 *    Copyright (c) 2025 - 2026.
4 *    Haixing Hu, Qubit Co. Ltd.
5 *
6 *    All rights reserved.
7 *
8 ******************************************************************************/
9//! Decoded JSON chunk or explicit SSE stream end marker.
10//!
11//! # Author
12//!
13//! Haixing Hu
14
15use serde::{Deserialize, Serialize};
16use strum::{Display, EnumString};
17
18/// Either a decoded JSON value from one SSE data payload or an explicit end marker.
19#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Display, EnumString)]
20#[serde(bound(
21    serialize = "T: serde::Serialize",
22    deserialize = "T: serde::de::DeserializeOwned"
23))]
24#[serde(rename_all = "snake_case")]
25#[strum(serialize_all = "snake_case")]
26pub enum SseChunk<T> {
27    /// Successfully deserialized JSON object.
28    #[strum(disabled)]
29    Data(T),
30    /// Synthetic item emitted when [`DoneMarkerPolicy`](crate::sse::DoneMarkerPolicy)
31    /// matches (then stream ends).
32    Done,
33}