diff --git a/src/value.rs b/src/value.rs index 6e6367f..1288ca0 100644 --- a/src/value.rs +++ b/src/value.rs @@ -1,4 +1,5 @@ use std::iter::{self, FromIterator}; +use std::ops::Index; use std::os::raw::c_void; use std::{ptr, slice, str, vec}; @@ -242,6 +243,15 @@ impl<'a, 'lua> IntoIterator for &'a MultiValue<'lua> { } } +impl<'lua> Index for MultiValue<'lua> { + type Output = Value<'lua>; + + #[inline] + fn index(&self, index: usize) -> &Self::Output { + &self.0[self.0.len() - index - 1] + } +} + impl<'lua> MultiValue<'lua> { #[inline] pub fn from_vec(mut v: Vec>) -> MultiValue<'lua> { @@ -262,13 +272,13 @@ impl<'lua> MultiValue<'lua> { } #[inline] - pub(crate) fn push_front(&mut self, value: Value<'lua>) { - self.0.push(value); + pub fn pop_front(&mut self) -> Option> { + self.0.pop() } #[inline] - pub(crate) fn pop_front(&mut self) -> Option> { - self.0.pop() + pub fn push_front(&mut self, value: Value<'lua>) { + self.0.push(value); } #[inline]