ninja_files_data/rule_id/
mod.rs1use std::borrow::Cow;
2mod as_ref;
3mod try_from;
4
5#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
6pub struct RuleId(Cow<'static, str>);
7
8#[derive(Clone, Debug)]
9pub struct InvalidRuleId(Cow<'static, str>);
10
11impl RuleId {
12 pub const fn is_valid(_input: &str) -> bool {
13 true
14 }
15 pub fn try_create<Id>(id: Id) -> Result<Self, InvalidRuleId>
16 where
17 Id: AsRef<str>,
18 {
19 let data = Cow::Owned(id.as_ref().into());
20 if Self::is_valid(id.as_ref()) {
21 Ok(RuleId(data))
22 } else {
23 Err(InvalidRuleId(data))
24 }
25 }
26
27 pub const fn unsafe_create(id: &'static str) -> Self {
28 if Self::is_valid(id) {
29 RuleId(Cow::Borrowed(id))
30 } else {
31 panic!("Invalid rule id");
32 }
33 }
34}
35
36pub const DYNDEP: &RuleId = &RuleId::unsafe_create("dyndep");
37pub const PHONY: &RuleId = &RuleId::unsafe_create("phony");