Implement utilities for MultiValue

This commit is contained in:
Eric Long 2022-06-29 01:21:19 +08:00
parent 04ba93137c
commit c20eb20a59
No known key found for this signature in database
GPG Key ID: 583FAB4005C652BE
1 changed files with 14 additions and 4 deletions

View File

@ -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<usize> 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<Value<'lua>>) -> 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<Value<'lua>> {
self.0.pop()
}
#[inline]
pub(crate) fn pop_front(&mut self) -> Option<Value<'lua>> {
self.0.pop()
pub fn push_front(&mut self, value: Value<'lua>) {
self.0.push(value);
}
#[inline]