#![doc = include_str!("../README.md")]
mod lending_iter;
mod lending_iter_mut;
mod popping_iter;
mod trivial_last_entry;
pub use lending_iter::LendingIter;
pub use lending_iter_mut::LendingIterMut;
pub use popping_iter::PoppingIter;
pub use trivial_last_entry::TrivialLastEntry;
pub trait VecVecExt {
type Item;
fn popping_iter(&mut self) -> PoppingIter<'_, Self::Item>;
fn lending_iter_mut(&mut self) -> LendingIterMut<'_, Self::Item>;
fn lending_iter(&self) -> LendingIter<'_, Self::Item>;
fn trivial_last_entry(&mut self) -> Option<TrivialLastEntry<'_, Self::Item>>;
}
impl<T> VecVecExt for Vec<Vec<T>> {
type Item = T;
fn popping_iter(&mut self) -> PoppingIter<'_, Self::Item> {
PoppingIter(self)
}
fn lending_iter_mut(&mut self) -> LendingIterMut<'_, Self::Item> {
LendingIterMut::new(self)
}
fn lending_iter(&self) -> LendingIter<'_, Self::Item> {
LendingIter::new(self)
}
fn trivial_last_entry(&mut self) -> Option<TrivialLastEntry<'_, Self::Item>> {
TrivialLastEntry::new(self)
}
}