use core::fmt::{Display, Formatter, Result};
use super::{Code, JobId};
impl Display for JobId {
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
f.write_str(self.name.as_ref())?;
for deeper in self.namespace.iter().rev() {
f.write_str("@")?;
f.write_str(deeper.as_ref())?;
}
Ok(())
}
}
impl Display for Code {
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
match self {
Code::Explicit(code) => write!(f, "code = {code}"),
Code::Range { min, max, mask } => {
let mut unconditional = false;
if (*min..*max) == (0usize..usize::MAX) {
unconditional = true;
write!(f, "code")?;
} else if min <= max {
if *max == usize::MAX {
write!(f, "code >= {min}")?;
} else {
write!(f, "code in [{min},{max}]")?;
}
} else {
write!(f, "code not in ({max},{min})")?;
}
if *mask != 0 {
write!(f, " & {mask:b}")?;
} else if unconditional {
write!(f, " any")?;
}
Ok(())
}
}
}
}