Crates.io Documentation License Workflow Status

appconfig

A simple configuration file manager for desktop applications.

The configuration file is read from and written to the following locations.

|Platform | Value | Example | | ------- | ---------------------------------------- | ---------------------------------------- | | Linux | $XDG_DATA_HOME or $HOME/.local/share | /home/alice/.local/share | | macOS | $HOME/Library/Application Support | /Users/Alice/Library/Application Support | | Windows | {FOLDERID_LocalAppData} | C:\Users\Alice\AppData\Local |

Usage

sh cargo add appconfig

```rust use std::{cell::RefCell, rc::Rc}; use appconfig::AppConfigManager; use appconfig::serde::{Deserialize, Serialize};

[derive(Debug, Serialize, Deserialize, PartialEq)]

struct MyAppConfig { window_pos: (u32, u32), }

impl Default for MyAppConfig { fn default() -> Self { Self { window_pos: (320, 280), } } }

fn main() { let config = Rc::from(RefCell::from(MyAppConfig::default())); let manager = AppConfigManager::new( config.clone(), std::env!("CARGOCRATENAME"), // CRATEBINNAME etc.., "sumibi-yakitori", );

manager.save().unwrap(); manager.load().unwrap(); assert_eq!(*config.borrow(), MyAppConfig::default()); } ```