opzioni 3.0.1

A slim and fast configuration library for Rust
Documentation

⚙️ opzioni

A simple and fast configuration library for Rust.

Installation

Add the library to your project via cargo:

cargo add opzioni

Features

By default all features are enabled. This allows to work with JSON, TOML and YAML configs.

If you want to only use a subset run:

cargo add opzioni --no-default-features --features json

Replace json with the features you want to enable. The available features are

  • json
  • yaml
  • toml

You can also enable logs via the tracing crate using the tracing feature. This feature is disabled by default

Usage

First create a struct implementing Serialize, Deserialize and Default

use serde::{Serialize, Deserialize}

#[derive(Serialize, Deserialize, Default)]
struct MyConfig {
    name: String,
    age: u8
}

Then just load the config file using opzioni:

let config = opzioni::Config::<MyConfig>::configure().load(std::path::Path::new("myconfig.yml")).unwrap();

opzioni exposes a RwLock which can be used to modify the config data:

let lock = config.get();
let data = lock.read().unwrap();
// or
let mut data = lock.write().unwrap();

Once you are done working with the config you can save the changes to disk by calling save:

config.save().unwrap();