protobuf/reflect/acc/
mod.rsuse crate::message_dyn::MessageDyn;
use crate::reflect::acc::v2::AccessorV2;
use crate::reflect::ReflectFieldRef;
pub(crate) mod v2;
#[derive(Debug)]
pub(crate) enum GeneratedFieldAccessor {
V2(AccessorV2),
}
#[derive(Debug)]
pub struct FieldAccessor {
pub(crate) _name: &'static str,
pub(crate) accessor: GeneratedFieldAccessor,
}
impl GeneratedFieldAccessor {
pub(crate) fn get_reflect<'a>(&self, m: &'a dyn MessageDyn) -> ReflectFieldRef<'a> {
match self {
GeneratedFieldAccessor::V2(AccessorV2::Singular(ref a)) => {
ReflectFieldRef::Optional(a.accessor.get_field(m))
}
GeneratedFieldAccessor::V2(AccessorV2::Repeated(ref a)) => {
ReflectFieldRef::Repeated(a.accessor.get_repeated(m))
}
GeneratedFieldAccessor::V2(AccessorV2::Map(ref a)) => {
ReflectFieldRef::Map(a.accessor.get_reflect(m))
}
}
}
}
impl FieldAccessor {
pub(crate) fn new(name: &'static str, accessor: AccessorV2) -> FieldAccessor {
FieldAccessor {
_name: name,
accessor: GeneratedFieldAccessor::V2(accessor),
}
}
}