diff --git a/protobuf/src/reflect/dynamic/mod.rs b/protobuf/src/reflect/dynamic/mod.rs index 96fa20216..1c497c290 100644 --- a/protobuf/src/reflect/dynamic/mod.rs +++ b/protobuf/src/reflect/dynamic/mod.rs @@ -1,3 +1,9 @@ +//! This module contains dynamic reflection. +//! +//! It is used for dynamically getting fields' values. + +#![doc(hidden)] + use std::any::Any; use std::any::TypeId; use std::fmt; @@ -95,8 +101,11 @@ impl DynamicFieldValue { } } +/// Structure used for dynamic reflection. +/// +/// It is mostly used for dynamically getting fields' values. #[derive(Debug, Clone)] -pub(crate) struct DynamicMessage { +pub struct DynamicMessage { descriptor: MessageDescriptor, /// Fields by index in the description. /// This field is lazy-init: it is empty when created. @@ -127,7 +136,8 @@ impl DynamicMessage { } } - pub(crate) fn get_reflect<'a>(&'a self, field: &FieldDescriptor) -> ReflectFieldRef<'a> { + /// Get a field reference for a field descriptor. + pub fn get_reflect<'a>(&'a self, field: &FieldDescriptor) -> ReflectFieldRef<'a> { let (descriptor, index) = field.regular(); assert_eq!(self.descriptor, descriptor); if self.fields.is_empty() { @@ -137,6 +147,7 @@ impl DynamicMessage { } } + /// Clear a field. pub fn clear_field(&mut self, field: &FieldDescriptor) { let (descriptor, index) = field.regular(); assert_eq!(self.descriptor, descriptor); diff --git a/protobuf/src/reflect/mod.rs b/protobuf/src/reflect/mod.rs index c01c0e7d4..e5bc89d2c 100644 --- a/protobuf/src/reflect/mod.rs +++ b/protobuf/src/reflect/mod.rs @@ -14,7 +14,7 @@ //! Some minor adjustements are made to make code more idiomatic to rust. mod acc; -mod dynamic; +pub mod dynamic; mod enums; pub(crate) mod error; mod field;