#![allow(non_snake_case)]
#[cfg(feature = "0_14")]
pub use prost_0_14::{bytes::Buf, DecodeError, Message};
#[cfg(feature = "0_13")]
pub use prost_0_13::{bytes::Buf, DecodeError, Message};
#[cfg(feature = "0_12")]
pub use prost_0_12::{bytes::Buf, DecodeError, Message};
#[cfg(feature = "0_11")]
pub use prost_0_11::{bytes::Buf, DecodeError, Message};
#[cfg(feature = "0_10")]
pub use prost_0_10::{bytes::Buf, DecodeError, Message};
pub trait MessageExt: Send + Sync {
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>
where
Self: Default;
}
macro_rules! impl_message_ext_for_tuple {
($($T:ident),*) => {
impl<$($T),*> MessageExt for ($($T),*)
where
$($T: Message + Default + Send + Sync,)*
{
fn decode_length_delimited(mut buf: impl Buf) -> Result<Self, DecodeError> {
$(
let $T = $T::decode_length_delimited(&mut buf)?;
)*
Ok(($($T),*))
}
}
};
}
impl_message_ext_for_tuple!(T1, T2);
impl_message_ext_for_tuple!(T1, T2, T3);
impl_message_ext_for_tuple!(T1, T2, T3, T4);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16);
impl_message_ext_for_tuple!(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17);