use crate::{FeatureMetadata, FeatureRecord, OverrideSource};
pub struct FeatureRecordBuilder {
section_name: String,
enabled: bool,
override_source: Option<OverrideSource>,
requires: &'static [&'static str],
metadata: Box<FeatureMetadata>,
}
impl FeatureRecordBuilder {
pub(crate) fn new(section_name: impl Into<String>) -> Self {
Self {
section_name: section_name.into(),
enabled: false,
override_source: None,
requires: &[],
metadata: Box::new(FeatureMetadata::default()),
}
}
pub(crate) fn enabled(mut self, v: bool) -> Self {
self.enabled = v;
self
}
pub(crate) fn override_source(mut self, v: OverrideSource) -> Self {
self.override_source = Some(v);
self
}
pub(crate) fn requires(mut self, v: &'static [&'static str]) -> Self {
self.requires = v;
self
}
pub(crate) fn metadata(mut self, v: FeatureMetadata) -> Self {
self.metadata = Box::new(v);
self
}
pub(crate) fn build(self) -> FeatureRecord {
FeatureRecord {
section_name: self.section_name,
enabled: self.enabled,
override_source: self.override_source,
requires: self.requires,
metadata: self.metadata,
}
}
}
impl crate::FeatureRecordBuilderOps for FeatureRecordBuilder {
fn new(section_name: impl Into<String>) -> Self {
FeatureRecordBuilder::new(section_name)
}
fn enabled(self, v: bool) -> Self {
FeatureRecordBuilder::enabled(self, v)
}
fn override_source(self, v: OverrideSource) -> Self {
FeatureRecordBuilder::override_source(self, v)
}
fn requires(self, v: &'static [&'static str]) -> Self {
FeatureRecordBuilder::requires(self, v)
}
fn metadata(self, v: FeatureMetadata) -> Self {
FeatureRecordBuilder::metadata(self, v)
}
fn build(self) -> FeatureRecord {
FeatureRecordBuilder::build(self)
}
}