Crate protobuf_codec [−] [src]
Encoders and decoders for Protocol Buffers based on bytecodec crate.
Examples
An encoder/decoder for SearchRequest
message defined in the Language Guide.
use bytecodec::EncodeExt; use bytecodec::io::{IoDecodeExt, IoEncodeExt}; use protobuf_codec::field::{Fields, OptionalFieldDecoder, OptionalFieldEncoder}; use protobuf_codec::field::num::{F1, F2, F3}; use protobuf_codec::message::{MessageDecoder, MessageEncoder}; use protobuf_codec::scalar::{Int32Decoder, Int32Encoder, StringDecoder, StringEncoder}; // syntax = "proto3"; // // message SearchRequest { // string query = 1; // int32 page_number = 2; // int32 result_per_page = 3; // } type SearchRequestEncoder = MessageEncoder< Fields<( OptionalFieldEncoder<F1, StringEncoder>, OptionalFieldEncoder<F2, Int32Encoder>, OptionalFieldEncoder<F3, Int32Encoder>, )>, >; type SearchRequestDecoder = MessageDecoder< Fields<( OptionalFieldDecoder<F1, StringDecoder>, OptionalFieldDecoder<F2, Int32Decoder>, OptionalFieldDecoder<F3, Int32Decoder>, )>, >; let mut buf = Vec::new(); let mut encoder = SearchRequestEncoder::with_item(("foo".to_owned(), 3, 10)).unwrap(); encoder.encode_all(&mut buf).unwrap(); assert_eq!(buf, [10, 3, 102, 111, 111, 16, 3, 24, 10]); let mut decoder = SearchRequestDecoder::default(); let message = decoder.decode_exact(&buf[..]).unwrap(); assert_eq!(message, ("foo".to_owned(), 3, 10));
References
Modules
field |
Encoders, decoders and related components for message fields. |
message |
Encoders, decoders and traits for messages. |
scalar |
Encoders and decoders for scalar values. |
wire |
Encoders and decoders and related components for values used in the binary wire format. |
Macros
protobuf_message_decoder |
Macro for creating an instance of a message decoder. |
protobuf_message_encoder |
Macro for creating an instance of a message encoder. |
protobuf_message_field_decoder |
Auxiliary macro used for expanding |
protobuf_message_field_encoder |
Auxiliary macro used for expanding |
protobuf_message_oneof_field_decoder |
Auxiliary macro used for expanding |
protobuf_message_oneof_field_encoder |
Auxiliary macro used for expanding |