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 |
sh
cargo add appconfig serde
```rust use std::{cell::RefCell, rc::Rc}; use appconfig::AppConfigManager; use serde::{Deserialize, Serialize};
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()); } ```