Skip to main content

cgp_serde/providers/
serde.rs

1use 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}