cgp_serde/providers/
serde.rs1use cgp::prelude::*;
2use serde::{Deserialize as SerdeDeserialize, Serialize as SerdeSerialize};
3
4use crate::components::{
5 ValueDeserializer, ValueDeserializerComponent, ValueSerializer, ValueSerializerComponent,
6};
7
8pub struct UseSerde;
9
10#[cgp_impl(UseSerde)]
11impl<Value> ValueSerializer<Value>
12where
13 Value: SerdeSerialize,
14{
15 fn serialize<S>(&self, value: &Value, serializer: S) -> Result<S::Ok, S::Error>
16 where
17 S: serde::Serializer,
18 {
19 value.serialize(serializer)
20 }
21}
22
23#[cgp_impl(UseSerde)]
24impl<'a, Value> ValueDeserializer<'a, Value>
25where
26 Value: SerdeDeserialize<'a>,
27{
28 fn deserialize<D>(&self, deserializer: D) -> Result<Value, D::Error>
29 where
30 D: serde::Deserializer<'a>,
31 {
32 Value::deserialize(deserializer)
33 }
34}