1use stable_vec::StableVecFacade;
6
7use crate::{Get, Insert, IntoIter, KeyedCollection, Push, Remove, Set, StableRemove};
8
9impl<V, C: stable_vec::core::Core<V>> KeyedCollection for StableVecFacade<V, C> {
10 type Key = usize;
11 type Value = V;
12}
13
14impl<V, C: stable_vec::core::Core<V>> Get<usize> for StableVecFacade<V, C> {
15 #[inline(always)]
16 fn get(&self, index: &usize) -> Option<&V> {
17 StableVecFacade::get(self, *index)
18 }
19}
20
21impl<V, C: stable_vec::core::Core<V>> Set<usize> for StableVecFacade<V, C> {
22 #[inline(always)]
23 fn set(&mut self, index: usize, value: V) {
24 StableVecFacade::insert(self, index, value);
25 }
26}
27
28impl<V, C: stable_vec::core::Core<V>> Insert<usize> for StableVecFacade<V, C> {
29 #[inline(always)]
30 fn insert(&mut self, index: usize, value: V) {
31 self.reserve_for(index);
32 StableVecFacade::insert(self, index, value);
33 }
34}
35
36impl<V, C: stable_vec::core::Core<V>> Remove<usize> for StableVecFacade<V, C> {
37 #[inline(always)]
38 fn remove(&mut self, index: &usize) -> Option<V> {
39 self.get(*index)?;
40 StableVecFacade::remove(self, *index)
41 }
42}
43
44impl<V, C: stable_vec::core::Core<V>> StableRemove<usize> for StableVecFacade<V, C> {}
45
46impl<V, C: stable_vec::core::Core<V>> Push<usize> for StableVecFacade<V, C> {
47 #[inline(always)]
48 fn push(&mut self, value: V) -> usize {
49 StableVecFacade::push(self, value)
50 }
51}
52
53impl<V, C: stable_vec::core::Core<V>> IntoIter<usize> for StableVecFacade<V, C> {
54 type IntoIter = stable_vec::iter::IntoIter<V, C>;
55
56 #[inline(always)]
57 fn into_iter(self) -> stable_vec::iter::IntoIter<V, C> {
58 IntoIterator::into_iter(self)
59 }
60}