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}