Skip to main content

protosocket_prost/
serializer.rs

1use std::marker::PhantomData;
2
3use protosocket::Serialize;
4
5/// A stateless implementation of `Serialize` using `prost`
6#[derive(Default, Debug)]
7pub struct ProstSerializer<Message> {
8    _phantom: PhantomData<Message>,
9}
10
11impl<Message> Serialize for ProstSerializer<Message>
12where
13    Message: prost::Message + std::fmt::Debug,
14{
15    type Message = Message;
16
17    fn serialize_into_buffer(&mut self, message: Self::Message, buffer: &mut Vec<u8>) {
18        match message.encode_length_delimited(buffer) {
19            Ok(_) => {
20                log::debug!("encoded {message:?}");
21            }
22            Err(e) => {
23                log::error!("encoding error: {e:?}");
24            }
25        }
26    }
27}