tl_proto/option.rs
1use crate::traits::*;
2
3/// Skips serialization if `None`, serializes as `T` otherwise.
4impl<T> TlWrite for Option<T>
5where
6 T: TlWrite,
7{
8 type Repr = T::Repr;
9
10 #[inline(always)]
11 fn max_size_hint(&self) -> usize {
12 if let Some(item) = self {
13 item.max_size_hint()
14 } else {
15 0
16 }
17 }
18
19 #[inline(always)]
20 fn write_to<P>(&self, packet: &mut P)
21 where
22 P: TlPacket,
23 {
24 if let Some(item) = self {
25 item.write_to(packet)
26 }
27 }
28}