Skip to main content

gpui_query/core/error/
serde.rs

1//! Serde serialization/deserialization for [`QueryError`](super::QueryError).
2
3use serde::{Deserialize, Deserializer, Serialize, Serializer};
4
5use super::types::{QueryError, QueryErrorKind};
6
7impl Serialize for QueryError {
8    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
9        #[derive(Serialize)]
10        struct Helper<'a> {
11            kind: QueryErrorKind,
12            message: &'a str,
13        }
14        Helper {
15            kind: self.kind,
16            message: &self.message,
17        }
18        .serialize(serializer)
19    }
20}
21
22impl<'de> Deserialize<'de> for QueryError {
23    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
24        #[derive(Deserialize)]
25        struct Helper {
26            kind: QueryErrorKind,
27            message: String,
28        }
29        let h = Helper::deserialize(deserializer)?;
30        Ok(Self {
31            kind: h.kind,
32            message: h.message.into(),
33        })
34    }
35}