1#![allow(non_snake_case)]
2
3#[cfg(feature = "0_14")]
4pub use prost_0_14::{bytes::Buf, DecodeError, Message};
5
6#[cfg(feature = "0_13")]
7pub use prost_0_13::{bytes::Buf, DecodeError, Message};
8
9#[cfg(feature = "0_12")]
10pub use prost_0_12::{bytes::Buf, DecodeError, Message};
11
12#[cfg(feature = "0_11")]
13pub use prost_0_11::{bytes::Buf, DecodeError, Message};
14
15#[cfg(feature = "0_10")]
16pub use prost_0_10::{bytes::Buf, DecodeError, Message};
17
18pub trait MessageExt: Send + Sync {
19 fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>
20 where
21 Self: Default;
22}
23
24macro_rules! impl_message_ext_for_tuple {
42 ($($T:ident),*) => {
43 impl<$($T),*> MessageExt for ($($T),*)
44 where
45 $($T: Message + Default + Send + Sync,)*
46 {
47 fn decode_length_delimited(mut buf: impl Buf) -> Result<Self, DecodeError> {
48 $(
49 let $T = $T::decode_length_delimited(&mut buf)?;
50 )*
51 Ok(($($T),*))
52 }
53 }
54 };
55}
56
57impl_message_ext_for_tuple!(T1, T2);
59impl_message_ext_for_tuple!(T1, T2, T3);
60impl_message_ext_for_tuple!(T1, T2, T3, T4);
61impl_message_ext_for_tuple!(T1, T2, T3, T4, T5);
62impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6);
63impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7);
64impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8);
65impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9);
66impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10);
67impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11);
68impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12);
69impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13);
70impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14);
71impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15);
72impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16);
73impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17);