#[derive(Debug, PartialEq)]
pub enum DslError {
NoNavItems,
TooManyNavItems { max: usize, got: usize },
NavItemMissingId(usize),
NavItemMissingLabel(usize),
ToolbarItemMissingId(usize),
UnknownIcon { context: &'static str, index: usize, name: String },
NavWithoutView(String),
ViewWithoutNav(String),
}
impl std::fmt::Display for DslError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
DslError::NoNavItems =>
write!(f, "nav: at least one item required"),
DslError::TooManyNavItems { max, got } =>
write!(f, "nav: {got} items exceeds platform maximum of {max}"),
DslError::NavItemMissingId(i) =>
write!(f, "nav[{i}]: id must not be empty"),
DslError::NavItemMissingLabel(i) =>
write!(f, "nav[{i}]: label must not be empty"),
DslError::ToolbarItemMissingId(i) =>
write!(f, "toolbar[{i}]: id must not be empty"),
DslError::UnknownIcon { context, index, name } =>
write!(f, "{context}[{index}]: unknown icon \"{name}\" — see dsl::icons"),
DslError::NavWithoutView(id) =>
write!(f, "nav \"{id}\" has no registered ViewSlot — add .views([\"{id}\", ...])"),
DslError::ViewWithoutNav(id) =>
write!(f, "ViewSlot \"{id}\" has no nav item — remove from .views() or add to .nav()"),
}
}
}