use crate::val::Value;
#[derive(Debug, Clone)]
#[non_exhaustive]
pub struct ValueBatch {
values: Vec<Value>,
}
impl ValueBatch {
pub(crate) fn new(values: Vec<Value>) -> Self {
Self {
values,
}
}
pub(crate) fn empty() -> Self {
Self::new(Vec::new())
}
pub(crate) fn len(&self) -> usize {
self.values.len()
}
pub(crate) fn is_empty(&self) -> bool {
self.values.is_empty()
}
pub(crate) fn values(&self) -> &[Value] {
&self.values
}
pub(crate) fn values_mut(&mut self) -> &mut Vec<Value> {
&mut self.values
}
pub(crate) fn into_values(self) -> Vec<Value> {
self.values
}
}
impl From<Vec<Value>> for ValueBatch {
fn from(values: Vec<Value>) -> Self {
Self::new(values)
}
}
impl IntoIterator for ValueBatch {
type Item = Value;
type IntoIter = std::vec::IntoIter<Value>;
fn into_iter(self) -> Self::IntoIter {
self.values.into_iter()
}
}
impl<'a> IntoIterator for &'a ValueBatch {
type Item = &'a Value;
type IntoIter = std::slice::Iter<'a, Value>;
fn into_iter(self) -> Self::IntoIter {
self.values.iter()
}
}