1mod action;
18mod feature;
19mod feature_set;
20mod provide;
21mod require;
22mod since;
23
24pub use crate::action::Action;
25pub use crate::feature::Feature;
26pub use crate::feature_set::FeatureSet;
27pub use crate::provide::Provide;
28pub use crate::require::Require;
29pub use crate::since::Since;
30
31#[cfg(test)]
32mod tests;
33
34pub const fn add_provide(
36 name_ver: (&'static str, u64),
37 since_date: &'static str,
38 since_ver: (u64, u64, u64),
39) -> Action<Provide> {
40 Action::Add(Provide {
41 feature: Feature::new(name_ver, since_date, since_ver),
42 })
43}
44
45pub const fn del_provide(
47 name_ver: (&'static str, u64),
48 date: &'static str,
49 ver: (u64, u64, u64),
50) -> Action<Provide> {
51 Action::Delete(Provide {
52 feature: Feature::new(name_ver, date, ver),
53 })
54}
55
56pub const fn add_require(
57 name: (&'static str, u64),
58 date: &'static str,
59 ver: (u64, u64, u64),
60) -> Action<Require> {
61 Action::Add(Require {
62 optional: false,
63 feature: Feature::new(name, date, ver),
64 })
65}
66
67pub const fn del_require(
68 name: (&'static str, u64),
69 date: &'static str,
70 ver: (u64, u64, u64),
71) -> Action<Require> {
72 Action::Delete(Require {
73 optional: false,
74 feature: Feature::new(name, date, ver),
75 })
76}
77
78pub const fn add_optional(
79 name: (&'static str, u64),
80 date: &'static str,
81 ver: (u64, u64, u64),
82) -> Action<Require> {
83 Action::Add(Require {
84 optional: true,
85 feature: Feature::new(name, date, ver),
86 })
87}