configbuilder_pattern_loader/
feature_record_builder.rs1use crate::{FeatureMetadata, FeatureRecord, OverrideSource};
2
3pub struct FeatureRecordBuilder {
10 section_name: String,
11 enabled: bool,
12 override_source: Option<OverrideSource>,
13 requires: &'static [&'static str],
14 metadata: Box<FeatureMetadata>,
15}
16
17impl FeatureRecordBuilder {
18 pub(crate) fn new(section_name: impl Into<String>) -> Self {
19 Self {
20 section_name: section_name.into(),
21 enabled: false,
22 override_source: None,
23 requires: &[],
24 metadata: Box::new(FeatureMetadata::default()),
25 }
26 }
27
28 pub(crate) fn enabled(mut self, v: bool) -> Self {
29 self.enabled = v;
30 self
31 }
32
33 pub(crate) fn override_source(mut self, v: OverrideSource) -> Self {
34 self.override_source = Some(v);
35 self
36 }
37
38 pub(crate) fn requires(mut self, v: &'static [&'static str]) -> Self {
39 self.requires = v;
40 self
41 }
42
43 pub(crate) fn metadata(mut self, v: FeatureMetadata) -> Self {
44 self.metadata = Box::new(v);
45 self
46 }
47
48 pub(crate) fn build(self) -> FeatureRecord {
49 FeatureRecord {
50 section_name: self.section_name,
51 enabled: self.enabled,
52 override_source: self.override_source,
53 requires: self.requires,
54 metadata: self.metadata,
55 }
56 }
57}
58
59impl crate::FeatureRecordBuilderOps for FeatureRecordBuilder {
60 fn new(section_name: impl Into<String>) -> Self {
61 FeatureRecordBuilder::new(section_name)
62 }
63
64 fn enabled(self, v: bool) -> Self {
65 FeatureRecordBuilder::enabled(self, v)
66 }
67
68 fn override_source(self, v: OverrideSource) -> Self {
69 FeatureRecordBuilder::override_source(self, v)
70 }
71
72 fn requires(self, v: &'static [&'static str]) -> Self {
73 FeatureRecordBuilder::requires(self, v)
74 }
75
76 fn metadata(self, v: FeatureMetadata) -> Self {
77 FeatureRecordBuilder::metadata(self, v)
78 }
79
80 fn build(self) -> FeatureRecord {
81 FeatureRecordBuilder::build(self)
82 }
83}