micro_tower/api/codec/
json.rs

1use bytes::buf::{Reader, Writer};
2use bytes::BytesMut;
3use serde::de::DeserializeOwned;
4use serde::Serialize;
5
6use super::{Decode, Encode};
7
8pub struct Json;
9
10impl<T: DeserializeOwned> Decode<T> for Json {
11    type Error = serde_json::Error;
12
13    fn decode(reader: &mut Reader<BytesMut>) -> Result<T, Self::Error> {
14        serde_json::from_reader(reader)
15    }
16}
17
18impl<T: Serialize> Encode<T> for Json {
19    type Error = serde_json::Error;
20
21    fn encode(writer: &mut Writer<BytesMut>, message: T) -> Result<(), Self::Error> {
22        serde_json::to_writer(writer, &message)
23    }
24}