Skip to main content

Crate buffa_reflect

Crate buffa_reflect 

Source
Expand description

Runtime reflection for the buffa protobuf implementation.

This crate provides a DescriptorPool that decodes a serialized google.protobuf.FileDescriptorSet into navigable descriptor handles (MessageDescriptor, FieldDescriptor, EnumDescriptor, OneofDescriptor, …) and a one-method ReflectMessage trait that every generated buffa message can implement (typically via the #[derive(ReflectMessage)] macro re-exported from this crate).

§Quick start

use buffa_reflect::DescriptorPool;

const FDS_BYTES: &[u8] = b""; // produced by `buffa-reflect-build`
let pool = DescriptorPool::decode(FDS_BYTES)?;
for msg in pool.all_messages() {
    println!("{}: {} fields", msg.full_name(), msg.fields().len());
}

See buffa-reflect-build for the companion build-script crate that produces the descriptor set bytes and decorates generated messages with #[derive(ReflectMessage)].

Re-exports§

pub use crate::dynamic::DynamicMessage;dynamic
pub use crate::dynamic::MapKey;dynamic
pub use crate::dynamic::SetFieldError;dynamic
pub use crate::dynamic::UnknownFieldSet;dynamic
pub use crate::dynamic::Value;dynamic
pub use crate::enumeration::EnumDescriptor;
pub use crate::enumeration::EnumValueDescriptor;
pub use crate::error::DescriptorError;
pub use crate::field::Cardinality;
pub use crate::field::FieldDescriptor;
pub use crate::field::Kind;
pub use crate::file::FileDescriptor;
pub use crate::message::MessageDescriptor;
pub use crate::oneof::OneofDescriptor;
pub use crate::pool::DescriptorPool;
pub use crate::reflect::ReflectMessage;
pub use crate::reflect::ReflectMessageView;
pub use crate::service::MethodDescriptor;
pub use crate::service::ServiceDescriptor;

Modules§

dynamicdynamic
Runtime-typed protobuf messages keyed by crate::MessageDescriptor.
enumeration
EnumDescriptor and EnumValueDescriptor.
error
Errors raised when constructing or querying a crate::DescriptorPool.
field
FieldDescriptor, Kind, and Cardinality.
file
FileDescriptor — handle to one FileDescriptorProto in a pool.
message
MessageDescriptor — handle to a single proto message in a pool.
oneof
OneofDescriptor — handle to a oneof declaration on a message.
pool
DescriptorPool — the root handle holding decoded descriptors.
reflect
ReflectMessage — the runtime hand-off from a generated buffa message type to its descriptor.
service
ServiceDescriptor and MethodDescriptor — handles to gRPC services and their methods.

Structs§

UnknownFielddynamic
A single unknown field (field number + wire data).

Derive Macros§

ReflectMessagederive
Derive buffa_reflect::ReflectMessage for the annotated message struct.