ninja_files_data/rule_id/
mod.rs

1use 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");