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;dynamicpub use crate::dynamic::MapKey;dynamicpub use crate::dynamic::SetFieldError;dynamicpub use crate::dynamic::UnknownFieldSet;dynamicpub use crate::dynamic::Value;dynamicpub 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§
- dynamic
dynamic - Runtime-typed protobuf messages keyed by
crate::MessageDescriptor. - enumeration
EnumDescriptorandEnumValueDescriptor.- error
- Errors raised when constructing or querying a
crate::DescriptorPool. - field
FieldDescriptor,Kind, andCardinality.- file
FileDescriptor— handle to oneFileDescriptorProtoin 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
ServiceDescriptorandMethodDescriptor— handles to gRPC services and their methods.
Structs§
- Unknown
Field dynamic - A single unknown field (field number + wire data).
Derive Macros§
- Reflect
Message derive - Derive
buffa_reflect::ReflectMessagefor the annotated message struct.