use crate::OpId;
use super::Selected;
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Schedule(Vec<OpId>);
impl Schedule {
pub fn empty() -> Self {
Self(Vec::new())
}
pub(crate) fn issue_selected(&mut self, selected: impl Iterator<Item = Selected>) {
self.0.extend(selected.map(|a| a.0));
}
pub fn len(&self) -> usize {
self.0.len()
}
pub fn is_empty(&self) -> bool {
self.0.is_empty()
}
pub fn get_walker(&self) -> impl Iterator<Item = OpId> {
self.0.iter().copied()
}
}
impl FromIterator<OpId> for Schedule {
fn from_iter<T: IntoIterator<Item = OpId>>(iter: T) -> Self {
Self(iter.into_iter().collect())
}
}