nanvm_lib/vm/impls/
sized_index.rs1use core::ops::Index;
2
3use crate::{
4 common::sized_index::SizedIndex,
5 vm::{IContainer, IVm},
6};
7
8pub trait ContainerWrapper: Index<u32> {
14 type Vm: IVm;
15 type Internal: IContainer<Self::Vm, Item = Self::Output>;
16 fn internal(&self) -> &Self::Internal;
17 fn item(&self, index: u32) -> &Self::Output {
19 self.internal().items().index(index as usize)
20 }
21}
22
23impl<W: ContainerWrapper> SizedIndex<u32> for W {
24 fn length(&self) -> u32 {
25 self.internal().items().length() as u32
26 }
27}