use std::borrow::Cow;
mod as_ref;
mod try_from;
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub struct RuleId(Cow<'static, str>);
#[derive(Clone, Debug)]
pub struct InvalidRuleId(Cow<'static, str>);
impl RuleId {
pub const fn is_valid(_input: &str) -> bool {
true
}
pub fn try_create<Id>(id: Id) -> Result<Self, InvalidRuleId>
where
Id: AsRef<str>,
{
let data = Cow::Owned(id.as_ref().into());
if Self::is_valid(id.as_ref()) {
Ok(RuleId(data))
} else {
Err(InvalidRuleId(data))
}
}
pub const fn unsafe_create(id: &'static str) -> Self {
if Self::is_valid(id) {
RuleId(Cow::Borrowed(id))
} else {
panic!("Invalid rule id");
}
}
}
pub const DYNDEP: &RuleId = &RuleId::unsafe_create("dyndep");
pub const PHONY: &RuleId = &RuleId::unsafe_create("phony");