use crate::OptionalSend;
pub trait Batch<T>:
AsRef<[T]> + Extend<T> + IntoIterator<Item = T, IntoIter: OptionalSend> + FromIterator<T> + OptionalSend
{
fn of(items: impl IntoIterator<Item = T>) -> Self {
items.into_iter().collect()
}
fn len(&self) -> usize {
self.as_ref().len()
}
fn is_empty(&self) -> bool {
self.as_ref().is_empty()
}
fn last(&self) -> Option<&T> {
self.as_ref().last()
}
}
impl<T, B> Batch<T> for B where B: AsRef<[T]> + Extend<T> + IntoIterator<Item = T, IntoIter: OptionalSend> + FromIterator<T> + OptionalSend
{}