Trait MessageEncode

pub trait MessageEncode<T, R>: Sized {
    // Required methods
    fn write_message(item: T, writer: MessageWriter<'_, '_, R>);
    fn compute_message_size(item: &mut T, sizer: MessageSizer<'_>);
}
Expand description

The MessageEncode trait provides a message encoder for type T.

R is the external resource type, which allows encoding objects with non-protobuf resources such as file descriptors. Most implementors of this trait will be generic over all R.

Required Methods§

fn write_message(item: T, writer: MessageWriter<'_, '_, R>)

Writes item as a message.

fn compute_message_size(item: &mut T, sizer: MessageSizer<'_>)

Computes the size of item as a message.

Encoding will panic if the write_message call writes a different number of bytes than computed by this call.

Takes a mut reference to allow mutating/stabilizing the value so that the subsequent call to write_message acts on the same value as this call.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

§

impl MessageEncode<Message<'_>, Resource> for MessageEncoder

§

impl MessageEncode<OwnedMessage, Resource> for MessageEncoder

§

impl MessageEncode<Box<dyn DynSerializeMessage>, Resource> for MessageEncoder

§

impl<R> MessageEncode<Duration, R> for DurationEncoding

§

impl<R> MessageEncode<ProtobufMessage, R> for ProtobufMessageEncoding

§

impl<R> MessageEncode<SerializedMessage<R>, R> for SerializedMessageEncoder

§

impl<T, E, R> MessageEncode<T, R> for TransparentEncoding<E>
where T: Transparent, E: MessageEncode<<T as Transparent>::Inner, R>,

§

impl<T, R> MessageEncode<T, R> for ImpossibleField

§

impl<T, R> MessageEncode<T, R> for OneofEncoder
where T: OneofEncode<R>,

§

impl<T, R> MessageEncode<T, R> for ProstMessage
where T: Message + Default,

§

impl<T, R> MessageEncode<T, R> for TableEncoder

§

impl<T, R, E> MessageEncode<Box<T>, R> for BoxEncoding<E>
where E: MessageEncode<T, R>,

§

impl<T, R, E> MessageEncode<Arc<T>, R> for ArcEncoding<E>
where T: Clone, E: MessageEncode<T, R>,

§

impl<T, R, E> MessageEncode<T, R> for MessageEncoding<E>
where E: MessageEncode<T, R>,