[][src]Trait tari_common::configuration::loader::ConfigLoader

pub trait ConfigLoader: ConfigPath + for<'de> Deserialize<'de> {
    fn load_from(config: &Config) -> Result<Self, ConfigurationError> { ... }
}

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.
Loading content...

Implementors

impl<C> ConfigLoader for C where
    C: ConfigPath + for<'de> Deserialize<'de>, 
[src]

Loading content...