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}