Skip to main content

load

Function load 

Source
pub fn load<T: DeserializeOwned>(config_dir: &str) -> Result<T>
Expand description

Loads and deserializes a YAML config file for the current environment.

The file is resolved as {config_dir}/{APP_ENV}.yaml, where APP_ENV is read from the process environment via super::env() (defaults to "development"). After reading, all ${VAR} and ${VAR:default} placeholders are replaced with values from the process environment via substitute_env_vars before YAML deserialization with serde_yaml_ng.

T may be crate::Config or any application-specific struct — flatten Config with #[serde(flatten)] to keep the framework fields alongside custom ones.

§Errors

Returns crate::Error when:

  • The config file cannot be read (missing file, permission denied, …).
  • A required ${VAR} placeholder references an unset environment variable and provides no default.
  • A ${... placeholder is unclosed.
  • The YAML cannot be deserialized into T.

§Example

use modo::config::load;
use modo::Config;

let config: Config = load("config/").unwrap();