1
+ //! This module contains dynamic reflection.
2
+ //!
3
+ //! It is used for dynamically getting fields' values.
4
+
5
+ #![ doc( hidden) ]
6
+
1
7
use std:: any:: Any ;
2
8
use std:: any:: TypeId ;
3
9
use std:: fmt;
@@ -95,8 +101,11 @@ impl DynamicFieldValue {
95
101
}
96
102
}
97
103
104
+ /// Structure used for dynamic reflection.
105
+ ///
106
+ /// It is mostly used for dynamically getting fields' values.
98
107
#[ derive( Debug , Clone ) ]
99
- pub ( crate ) struct DynamicMessage {
108
+ pub struct DynamicMessage {
100
109
descriptor : MessageDescriptor ,
101
110
/// Fields by index in the description.
102
111
/// This field is lazy-init: it is empty when created.
@@ -127,7 +136,8 @@ impl DynamicMessage {
127
136
}
128
137
}
129
138
130
- pub ( crate ) fn get_reflect < ' a > ( & ' a self , field : & FieldDescriptor ) -> ReflectFieldRef < ' a > {
139
+ /// Get a field reference for a field descriptor.
140
+ pub fn get_reflect < ' a > ( & ' a self , field : & FieldDescriptor ) -> ReflectFieldRef < ' a > {
131
141
let ( descriptor, index) = field. regular ( ) ;
132
142
assert_eq ! ( self . descriptor, descriptor) ;
133
143
if self . fields . is_empty ( ) {
@@ -137,6 +147,7 @@ impl DynamicMessage {
137
147
}
138
148
}
139
149
150
+ /// Clear a field.
140
151
pub fn clear_field ( & mut self , field : & FieldDescriptor ) {
141
152
let ( descriptor, index) = field. regular ( ) ;
142
153
assert_eq ! ( self . descriptor, descriptor) ;
0 commit comments