Crate prost_reflect

Source
Expand description

This crate provides support for dynamic protobuf messages. These are useful when the protobuf type definition is not known ahead of time.

The main entry points into the API of this crate are:

§Example - decoding

DynamicMessage does not implement Default since it needs a message descriptor to function. To decode a protobuf byte stream into an instance of this type, use DynamicMessage::decode to create a default value for the MessageDescriptor instance and merge into it:

use prost::Message;
use prost_types::FileDescriptorSet;
use prost_reflect::{DynamicMessage, DescriptorPool, Value};

let pool = DescriptorPool::decode(include_bytes!("file_descriptor_set.bin").as_ref()).unwrap();
let message_descriptor = pool.get_message_by_name("package.MyMessage").unwrap();

let dynamic_message = DynamicMessage::decode(message_descriptor, b"\x08\x96\x01".as_ref()).unwrap();

assert_eq!(dynamic_message.get_field_by_name("foo").unwrap().as_ref(), &Value::I32(150));

Re-exports§

pub use prost;
pub use prost::bytes;
pub use prost_types;

Structs§

DescriptorError
An error that may occur while creating a DescriptorPool.
DescriptorPool
A DescriptorPool is a collection of related descriptors. Typically it will be created from a FileDescriptorSet output by the protobuf compiler (see DescriptorPool::from_file_descriptor_set) but it may also be built up by adding files individually.
DynamicMessage
DynamicMessage provides encoding, decoding and reflection of a protobuf message.
EnumDescriptor
A protobuf enum type.
EnumValueDescriptor
A value in a protobuf enum type.
ExtensionDescriptor
A protobuf extension field definition.
FieldDescriptor
A protobuf message definition.
FileDescriptor
A single source file containing protobuf messages and services.
MessageDescriptor
A protobuf message definition.
MethodDescriptor
A method definition for a ServiceDescriptor.
OneofDescriptor
A oneof field in a protobuf message.
ServiceDescriptor
A protobuf service definition.
UnknownField
An unknown field found when deserializing a protobuf message.

Enums§

Cardinality
Cardinality determines whether a field is optional, required, or repeated.
Kind
The type of a protobuf message field.
MapKey
A dynamically-typed key for a protobuf map.
SetFieldError
Error type returned by DynamicMessage::try_set_field().
Syntax
The syntax of a proto file.
Value
A dynamically-typed protobuf value.

Traits§

ReflectMessage
Trait for message types that support reflection.