A Rust implementation of encoders and decoders for Protocol Buffers based on [bytecodec] crate.
An encoder/decoder for SearchRequest
message defined in the Language Guide.
```rust extern crate bytecodec; extern crate protobuf_codec;
use bytecodec::EncodeExt; use bytecodec::io::{IoDecodeExt, IoEncodeExt}; use protobufcodec::field::{Fields, FieldDecoder, FieldEncoder, MaybeDefault}; use protobufcodec::field::num::{F1, F2, F3}; use protobufcodec::message::{MessageDecoder, MessageEncoder}; use protobufcodec::scalar::{Int32Decoder, Int32Encoder, StringDecoder, StringEncoder};
// syntax = "proto3";
//
// message SearchRequest {
// string query = 1;
// int32 pagenumber = 2;
// int32 resultper_page = 3;
// }
type SearchRequestEncoder = MessageEncoder<
Fields<(
MaybeDefault
; type SearchRequestDecoder = MessageDecoder< Fields<( MaybeDefault
>, MaybeDefault >, MaybeDefault >, )>, ;
fn main() { let mut buf = Vec::new(); let mut encoder = SearchRequestEncoder::withitem(("foo".toowned(), 3, 10)).unwrap(); encoder.encodeall(&mut buf).unwrap(); asserteq!(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));
} ```