[−][src]Crate fondant
fondant
is a macro based library to take the boilerplate out of
configuration handling. Most of fondant
is based off the confy
crate.
fondant
adds a couple of extra features:
- support for json, yaml and toml
- support for custom config paths
- support for custom config file names
Sample usage
// the struct has to derive Serialize, Deserialize and Default #[derive(Configure, Serialize, Deserialize, Default)] #[config_file = "config.toml"] // | // `-- this attribute sets the file name to "config.toml" // `-- the file format to "toml" // `-- the file path to "default" (read the notes below) struct AppConfig { version: u32, port: u32, username: String, } fn main() { // use `load` (associated method) to load the config file let mut conf = AppConfig::load().unwrap(); // do stuff with conf conf.version = 2; // call `store` to save changes conf.store().unwrap(); }
Notes:
load
returnsDefault::default
if the config file is not present, and stores a serializedDefault::default
at the specified path- the "default" config path varies by platform:
- GNU/Linux:
$XDG_CONFIG_HOME/my_cool_crate/config.toml
(follows xdg spec) - MacOS:
$HOME/Library/Preferences/my_cool_crate/config.toml
- Windows:
{FOLDERID_RoamingAppData}\_project_path_\config
- GNU/Linux:
Customization
Set your own filename, for ex.: apprc
#[derive(Configure, Serialize, Deserialize, Default)] #[config_file = "apprc.toml"] struct AppConfig { // -- snip -- } // effective path: $XDG_CONFIG_HOME/my_cool_crate/apprc.toml // effective format: toml
Change file format to yaml
, by changing the file extension.
Supported extensions are yaml
, toml
, json
:
#[derive(Configure, Serialize, Deserialize, Default)] #[config_file = "config.yaml"] struct AppConfig { // -- snip -- } // effective path: $XDG_CONFIG_HOME/my_cool_crate/config.yaml // effective format: yaml
Override the default config path, for ex.: the home directory (it is not recommended to override config path):
#[derive(Configure, Serialize, Deserialize, Default)] #[config_file = "~/.apprc.json"] struct AppConfig { // -- snip -- } // effective path: $HOME/.apprc.json // effective format: json
Modules
fondant_exports |
Enums
FondantError | Errors that |
Traits
Configure | Derive this trait on a struct to mark it as a 'configuration' struct. |
Derive Macros
Configure |