use crate::message::MessageDescriptor;
pub trait ReflectMessage {
fn descriptor(&self) -> MessageDescriptor;
#[cfg(feature = "dynamic")]
fn transcode_to_dynamic(&self) -> crate::DynamicMessage
where
Self: ::buffa::Message + Sized,
{
let descriptor = self.descriptor();
let bytes = ::buffa::Message::encode_to_vec(self);
crate::DynamicMessage::decode(descriptor, bytes.as_slice())
.expect("self-encoded message must decode against its own descriptor")
}
}
pub trait ReflectMessageView<'a>: ::buffa::view::MessageView<'a> {
fn descriptor(&self) -> MessageDescriptor;
}
#[cfg(feature = "dynamic")]
impl ReflectMessage for crate::DynamicMessage {
fn descriptor(&self) -> MessageDescriptor {
crate::DynamicMessage::descriptor(self)
}
}