From c20eb20a59a529e14724c56369e61fbfb86467ce Mon Sep 17 00:00:00 2001 From: Eric Long Date: Wed, 29 Jun 2022 01:21:19 +0800 Subject: [PATCH] Implement utilities for MultiValue --- src/value.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) 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]