use std::{
cmp::Ordering as CompareOrdering,
time::Instant,
};
use super::scheduled_task_entry::ScheduledTaskEntry;
pub(crate) struct ScheduledTask {
pub(crate) deadline: Instant,
sequence: usize,
pub(crate) entry: Box<dyn ScheduledTaskEntry>,
}
impl ScheduledTask {
pub(crate) const fn new(
deadline: Instant,
sequence: usize,
entry: Box<dyn ScheduledTaskEntry>,
) -> Self {
Self {
deadline,
sequence,
entry,
}
}
}
impl Eq for ScheduledTask {}
impl PartialEq for ScheduledTask {
#[inline]
fn eq(&self, other: &Self) -> bool {
self.deadline == other.deadline && self.sequence == other.sequence
}
}
impl Ord for ScheduledTask {
#[inline]
fn cmp(&self, other: &Self) -> CompareOrdering {
other
.deadline
.cmp(&self.deadline)
.then_with(|| other.sequence.cmp(&self.sequence))
}
}
impl PartialOrd for ScheduledTask {
#[inline]
fn partial_cmp(&self, other: &Self) -> Option<CompareOrdering> {
Some(self.cmp(other))
}
}