async_graphql_value/
extensions.rs1use std::{
2 collections::HashMap,
3 ops::{Deref, DerefMut},
4};
5
6use serde::{Deserialize, Deserializer, Serialize};
7
8#[derive(Debug, Clone, Default, Serialize, Eq, PartialEq)]
10#[serde(transparent)]
11pub struct Extensions(pub HashMap<String, crate::ConstValue>);
12
13impl<'de> Deserialize<'de> for Extensions {
14 fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15 Ok(Self(
16 <Option<HashMap<_, _>>>::deserialize(deserializer)?.unwrap_or_default(),
17 ))
18 }
19}
20
21impl Deref for Extensions {
22 type Target = HashMap<String, crate::ConstValue>;
23
24 fn deref(&self) -> &Self::Target {
25 &self.0
26 }
27}
28
29impl DerefMut for Extensions {
30 fn deref_mut(&mut self) -> &mut Self::Target {
31 &mut self.0
32 }
33}