#![doc(hidden)]
use crate::reflect::acc::v1::FieldAccessorFunctions;
use crate::reflect::acc::v1::FieldAccessorImpl;
use crate::reflect::acc::v1::FieldAccessorTrait;
use crate::Message;
pub(crate) mod v1;
pub(crate) enum Accessor {
V1(Box<dyn FieldAccessorTrait + 'static>),
}
pub struct FieldAccessor {
pub(crate) name: &'static str,
pub(crate) accessor: Accessor,
}
impl FieldAccessor {
pub(crate) fn new_v1<M: Message>(
name: &'static str,
fns: FieldAccessorFunctions<M>,
) -> FieldAccessor {
FieldAccessor {
name,
accessor: Accessor::V1(Box::new(FieldAccessorImpl { fns })),
}
}
}