use std::iter;
use super::JobCostModel;
use crate::time::Service;
#[derive(Debug, Clone, Copy)]
pub struct Scalar {
pub wcet: Service,
}
impl Scalar {
pub fn new(wcet: Service) -> Self {
Scalar { wcet }
}
}
impl From<Service> for Scalar {
fn from(val: Service) -> Self {
Self::new(val)
}
}
impl JobCostModel for Scalar {
fn cost_of_jobs(&self, n: usize) -> Service {
self.wcet * n as u64
}
fn least_wcet(&self, n: usize) -> Service {
if n > 0 {
self.wcet
} else {
Service::none()
}
}
fn job_cost_iter<'a>(&'a self) -> Box<dyn Iterator<Item = Service> + 'a> {
Box::new(iter::repeat(self.wcet))
}
}