use std::fmt::Debug;
use std::hash::Hash;
use std::rc::Rc;
use pumpkin_core::propagation::LocalId;
use pumpkin_core::variables::IntegerVariable;
#[derive(Debug)]
pub(crate) struct Task<Var> {
pub(crate) start_variable: Var,
pub(crate) processing_time: i32,
pub(crate) resource_usage: i32,
pub(crate) id: LocalId,
}
impl<Var: IntegerVariable + 'static> Task<Var> {
pub(crate) fn get_id(task: &Rc<Task<Var>>) -> usize {
task.id.unpack() as usize
}
}
impl<Var: IntegerVariable + 'static> Hash for Task<Var> {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
self.id.hash(state);
}
}
impl<Var: IntegerVariable + 'static> PartialEq for Task<Var> {
fn eq(&self, other: &Self) -> bool {
self.id.unpack() == other.id.unpack()
}
}
impl<Var: IntegerVariable + 'static> Eq for Task<Var> {}
#[derive(Clone, Debug)]
pub struct ArgTask<Var> {
pub start_time: Var,
pub processing_time: i32,
pub resource_usage: i32,
}