use super::env_defaults::{deserialize_bool_loose, raise_on_error};
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize, Clone, Debug)]
pub struct CoreConfig {
#[serde(
default = "raise_on_error",
deserialize_with = "deserialize_bool_loose"
)]
raise_on_error: bool,
}
impl Default for CoreConfig {
fn default() -> Self {
CoreConfig {
raise_on_error: raise_on_error(),
}
}
}
impl CoreConfig {
pub fn builder() -> CoreConfigBuilder {
CoreConfigBuilder::default()
}
pub fn raise_on_error(&self) -> bool {
self.raise_on_error
}
}
#[derive(Default)]
pub struct CoreConfigBuilder {
raise_on_error: Option<bool>,
}
impl CoreConfigBuilder {
pub fn raise_on_error(mut self, raise_on_error: bool) -> Self {
self.raise_on_error = Some(raise_on_error);
self
}
pub fn build(self) -> CoreConfig {
CoreConfig {
raise_on_error: self.raise_on_error.unwrap_or_else(raise_on_error),
}
}
}