use crate::options::ConfigReadOptions;
use super::config_field::ConfigField;
pub struct ConfigFieldBuilder<T> {
pub(crate) name: String,
pub(crate) aliases: Vec<String>,
pub(crate) default: Option<T>,
pub(crate) read_options: Option<ConfigReadOptions>,
}
impl<T> ConfigFieldBuilder<T> {
pub fn alias(mut self, alias: &str) -> Self {
self.aliases.push(alias.to_string());
self
}
pub fn default(mut self, default: T) -> Self {
self.default = Some(default);
self
}
pub fn read_options(mut self, read_options: ConfigReadOptions) -> Self {
self.read_options = Some(read_options);
self
}
pub fn build(self) -> ConfigField<T> {
ConfigField {
name: self.name,
aliases: self.aliases,
default: self.default,
read_options: self.read_options,
}
}
}