Skip to content

A slim and fast configuration library for Rust

Notifications You must be signed in to change notification settings

auribuo/opzioni

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚙️ 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();

About

A slim and fast configuration library for Rust

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages