use std::sync::Arc;
use smallvec::SmallVec;
pub type FetchTask = Arc<str>;
#[derive(Default)]
pub struct FetchTaskCollection(SmallVec<[FetchTask; 8]>);
impl FetchTaskCollection {
pub fn insert(&mut self, task: FetchTask) {
if !self.0.contains(&task) {
self.0.push(task);
}
}
pub fn insert_many(&mut self, tasks: impl IntoIterator<Item = FetchTask>) {
let tasks_iter = tasks.into_iter();
for task in tasks_iter {
self.insert(task);
}
}
pub fn into_inner(self) -> SmallVec<[FetchTask; 8]> {
self.0
}
}