The Principal Dev – Masterclass for Tech Leads

The Principal Dev – Masterclass for Tech LeadsJuly 17-18

Join

confy

crates.io docs.rs Discord

Zero-boilerplate configuration management.

Focus on storing the right data, instead of worrying about how or where to store it.

use serde_derive::{Serialize, Deserialize};

#[derive(Default, Debug, Serialize, Deserialize)]
struct MyConfig {
    version: u8,
    api_key: String,
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let cfg: MyConfig = confy::load("my-app-name", None)?;
    dbg!(cfg);
    Ok(())
}

Confy's feature flags

confy can be used with either TOML, YAML, or RON files. TOML is the default language used with confy but any of the other languages can be used by enabling them with feature flags as shown below.

Note: you can only use one of these features at a time, so in order to use either of the optional features you have to disable default features.

Using YAML

To use YAML files with confy you have to make sure you have enabled the yaml_conf feature and disabled both toml_conf and ron_conf.

Enable the feature in Cargo.toml:

[dependencies.confy]
features = ["yaml_conf"]
default-features = false

Using RON

For using RON files with confy you have to make sure you have enabled the ron_conf feature and disabled both toml_conf and yaml_conf.

Enable the feature in Cargo.toml:

[dependencies.confy]
features = ["ron_conf"]
default-features = false

Changing Error Messages

Information about adding context to error messages can be found at Providing Context

Config File Location

confy uses ProjectDirs to store your configuration files, the common locations for those are in the config_dir section, below are the common OS paths:

Linux macOS Windows
$XDG_CONFIG_HOME/<project_path> or $HOME/.config/<project_path> $HOME/Library/Application Support/<project_path> {FOLDERID_RoamingAppData}/<project_path>/config

Where the <project_path> will be rs.$MY_APP_NAME.

Breaking changes

Version 0.6.0

In this version we bumped several dependencies which have had changes with some of the default (de)serialization process:

Version 0.5.0

Version 0.4.0

Starting with version 0.4.0 the configuration file are stored in the expected place for your system. See the directories crates for more information. Before version 0.4.0, the configuration file was written in the current directory.

License

This work is triple-licensed under MIT, MIT/X11, or the Apache 2.0 (or any later version). You may choose any one of these three licenses if you use this work.

SPDX-License-Identifier: MIT OR X11 OR Apache-2.0+

Join libs.tech

...and unlock some superpowers

GitHub

We won't share your data with anyone else.