A simple configuration file manager for 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 |
cargo add appconfig
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(), "sumibi-yakitori");
manager.save().unwrap();
manager.load().unwrap();
assert_eq!(*config.borrow(), MyAppConfig::default());
}