use flatbuffers::{Follow, Vector};
pub(crate) trait FbIndex<I> {
fn len(&self) -> usize;
fn get(&self, index: usize) -> I;
}
impl<I: Copy> FbIndex<I> for &[I] {
#[inline(always)]
fn len(&self) -> usize {
<[I]>::len(self)
}
#[inline(always)]
fn get(&self, index: usize) -> I {
self[index]
}
}
impl FbIndex<()> for () {
#[inline(always)]
fn len(&self) -> usize {
0
}
fn get(&self, _index: usize) {}
}
impl<'a, T: Follow<'a>> FbIndex<T::Inner> for Vector<'a, T> {
#[inline(always)]
fn len(&self) -> usize {
Vector::len(self)
}
#[inline(always)]
fn get(&self, index: usize) -> T::Inner {
Vector::get(self, index)
}
}