genja_core/settings/
core.rs1use super::env_defaults::{deserialize_bool_loose, raise_on_error};
2use serde::{Deserialize, Serialize};
3
4#[derive(Deserialize, Serialize, Clone, Debug)]
9pub struct CoreConfig {
10 #[serde(
11 default = "raise_on_error",
12 deserialize_with = "deserialize_bool_loose"
13 )]
14 raise_on_error: bool,
15}
16
17impl Default for CoreConfig {
18 fn default() -> Self {
19 CoreConfig {
20 raise_on_error: raise_on_error(),
21 }
22 }
23}
24
25impl CoreConfig {
26 pub fn builder() -> CoreConfigBuilder {
27 CoreConfigBuilder::default()
28 }
29
30 pub fn raise_on_error(&self) -> bool {
31 self.raise_on_error
32 }
33}
34
35#[derive(Default)]
37pub struct CoreConfigBuilder {
38 raise_on_error: Option<bool>,
39}
40
41impl CoreConfigBuilder {
42 pub fn raise_on_error(mut self, raise_on_error: bool) -> Self {
43 self.raise_on_error = Some(raise_on_error);
44 self
45 }
46
47 pub fn build(self) -> CoreConfig {
48 CoreConfig {
49 raise_on_error: self.raise_on_error.unwrap_or_else(raise_on_error),
50 }
51 }
52}