use std::ops::Deref;
use std::slice::Iter;
use std::vec;
use crate::{ColorType, Output, OutputList};
use crate::output;
impl<'a> Default for OutputList<'a> {
fn default() -> Self {
OutputList(vec![Output::<'a>::default()])
}
}
impl<'a> Deref for OutputList<'a> {
type Target = Vec<Output<'a>>;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> IntoIterator for &'a OutputList<'a> {
type Item = &'a Output<'a>;
type IntoIter = Iter<'a, Output<'a>>;
fn into_iter(self) -> Self::IntoIter {
self.0.iter()
}
}
impl<'a> OutputList<'a> {
pub fn iter(&self) -> std::slice::Iter<'_, Output<'a>> {
self.0.iter()
}
pub fn output(self) {
let output_list: OutputList<'a> = self.clone();
for output in &output_list {
output.clone().output();
}
}
}