[−][src]Trait tari_common::configuration::loader::ConfigLoader
Configuration loader based on ConfigPath selectors
use tari_common::{ConfigLoader, NetworkConfigPath}; #[derive(Deserialize)] struct MyNodeConfig { #[serde(default = "welcome")] welcome_message: String, #[serde(default = "bye")] goodbye_message: String, } fn welcome() -> String { "welcome to tari".into() } fn bye() -> String { "bye bye".into() } impl NetworkConfigPath for MyNodeConfig { fn main_key_prefix() -> &'static str { "my_node" } } // Loading preset and serde default value let mut config = Config::new(); config.set("my_node.goodbye_message", "see you later"); config.set("my_node.mainnet.goodbye_message", "see you soon"); let my_config = <MyNodeConfig as ConfigLoader>::load_from(&config).unwrap(); assert_eq!(my_config.goodbye_message, "see you later".to_string()); assert_eq!(my_config.welcome_message, welcome()); // Overloading from network subsection as we use NetworkConfigPath config.set("my_node.use_network", "mainnet"); let my_config = <MyNodeConfig as ConfigLoader>::load_from(&config).unwrap(); assert_eq!(my_config.goodbye_message, "see you soon".to_string());
Provided methods
fn load_from(config: &Config) -> Result<Self, ConfigurationError>
Try to load configuration from supplied Config by main_key_prefix()
with values overloaded from overload_key_prefix()
.
Default values will be taken from
#[serde(default="value")]
field attribute- value defined in Config::set_default() For automated inheritance of Default values use DefaultConfigLoader.
Implementors
impl<C> ConfigLoader for C where
C: ConfigPath + for<'de> Deserialize<'de>,
[src]
C: ConfigPath + for<'de> Deserialize<'de>,