1 use crate::message_dyn::MessageDyn; 2 use crate::reflect::dynamic::DynamicMessage; 3 use crate::reflect::FieldDescriptor; 4 use crate::reflect::ReflectFieldRef; 5 use crate::reflect::ReflectMapMut; 6 use crate::reflect::ReflectRepeatedMut; 7 use crate::reflect::ReflectValueBox; 8 9 pub(crate) struct DynamicFieldDescriptorRef<'a> { 10 pub(crate) field: &'a FieldDescriptor, 11 } 12 13 impl<'a> DynamicFieldDescriptorRef<'a> { get_reflect<'b>(&self, message: &'b dyn MessageDyn) -> ReflectFieldRef<'b>14 pub(crate) fn get_reflect<'b>(&self, message: &'b dyn MessageDyn) -> ReflectFieldRef<'b> { 15 DynamicMessage::downcast_ref(message).get_reflect(&self.field) 16 } 17 mut_repeated<'b>( &self, message: &'b mut dyn MessageDyn, ) -> ReflectRepeatedMut<'b>18 pub(crate) fn mut_repeated<'b>( 19 &self, 20 message: &'b mut dyn MessageDyn, 21 ) -> ReflectRepeatedMut<'b> { 22 DynamicMessage::downcast_mut(message).mut_repeated(&self.field) 23 } 24 mut_map<'b>(&self, message: &'b mut dyn MessageDyn) -> ReflectMapMut<'b>25 pub(crate) fn mut_map<'b>(&self, message: &'b mut dyn MessageDyn) -> ReflectMapMut<'b> { 26 DynamicMessage::downcast_mut(message).mut_map(&self.field) 27 } 28 set_field(&self, message: &mut dyn MessageDyn, value: ReflectValueBox)29 pub(crate) fn set_field(&self, message: &mut dyn MessageDyn, value: ReflectValueBox) { 30 DynamicMessage::downcast_mut(message).set_field(&self.field, value) 31 } 32 clear_field(&self, message: &mut dyn MessageDyn)33 pub(crate) fn clear_field(&self, message: &mut dyn MessageDyn) { 34 DynamicMessage::downcast_mut(message).clear_field(&self.field) 35 } 36 } 37