Module serde_protobuf::de[][src]

Expand description

Deserialization of binary protocol buffer encoded data.

All deserialization operations require a previously loaded set of schema descriptors; see the descriptor module for more information.

Provided that a set of descriptors have been loaded, a Deserializer can be used to deserialize a stream of bytes into something that implements Deserialize.

extern crate serde;
extern crate protobuf;
extern crate serde_protobuf;
extern crate serde_value;

use std::fs;
use serde::de::Deserialize;
use serde_protobuf::descriptor::Descriptors;
use serde_protobuf::de::Deserializer;
use serde_value::Value;

// Load a descriptor registry (see descriptor module)
let mut file = fs::File::open("testdata/descriptors.pb")?;
let proto = protobuf::parse_from_reader(&mut file)?;
let descriptors = Descriptors::from_proto(&proto);

// Set up some data to read
let data = &[8, 42];
let mut input = protobuf::CodedInputStream::from_bytes(data);

// Create a deserializer
let name = ".protobuf_unittest.TestAllTypes";
let mut deserializer = Deserializer::for_named_message(&descriptors, name, input)?;

// Deserialize some struct
let value = Value::deserialize(&mut deserializer)?;

Structs

Deserializer

A deserializer that can deserialize a single message type.