1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use bytes::BufMut;
use crate::{
encoding::{Encodable, EncodableMessage, ProtobufSerializer},
wire_types::*,
Message, VarInt,
};
pub(crate) mod private {
pub trait Sealed {}
}
pub trait Signable: private::Sealed {
type Storage: Encodable;
type From;
fn zigzag_encode(f: Self::From) -> Self::Storage;
}
impl<T: EncodableMessage> Encodable for Message<T> {
type Wire = LengthDelimitedWire;
fn encoded_size<V: VarInt>(&self, field_number: V) -> usize {
let calc_size = EncodableMessage::encoded_size(&self.0);
field_number.size() + calc_size.size() + calc_size
}
fn encode(&self, s: &mut ProtobufSerializer<impl BufMut>) {
s.write_varint(EncodableMessage::encoded_size(&self.0));
EncodableMessage::encode(&self.0, s)
}
}