1 #![doc(hidden)] 2 3 use crate::reflect::acc::v1::FieldAccessorFunctions; 4 use crate::reflect::acc::v1::FieldAccessorImpl; 5 use crate::reflect::acc::v1::FieldAccessorTrait; 6 use crate::Message; 7 8 pub(crate) mod v1; 9 10 pub(crate) enum Accessor { 11 V1(Box<dyn FieldAccessorTrait + 'static>), 12 } 13 14 /// Accessor object is constructed in generated code. 15 /// Should not be used directly. 16 pub struct FieldAccessor { 17 pub(crate) name: &'static str, 18 pub(crate) accessor: Accessor, 19 } 20 21 impl FieldAccessor { new_v1<M: Message>( name: &'static str, fns: FieldAccessorFunctions<M>, ) -> FieldAccessor22 pub(crate) fn new_v1<M: Message>( 23 name: &'static str, 24 fns: FieldAccessorFunctions<M>, 25 ) -> FieldAccessor { 26 FieldAccessor { 27 name, 28 accessor: Accessor::V1(Box::new(FieldAccessorImpl { fns })), 29 } 30 } 31 } 32