Macro save_settings

Source
macro_rules! save_settings {
    ($settings:expr) => { ... };
    ($settings: expr, $file_name: expr) => { ... };
    ($settings: expr, $file_name: expr, $folder_name: expr) => { ... };
}
Expand description

Saves settings given a struct to save, to the home directory with a name matching the crate name

Syntax: save_settings!(settings_struct) save_settings!(settings_struct, file_name) save_settings!(settings_struct, file_name, folder_name)

use serde::{Deserialize, Serialize};
use cr_program_settings::prelude::*;

// create a struct we want to save, it needs to implement at a minimum of Serialize and Deserialize
#[derive(Serialize,Deserialize, PartialEq, Debug)]
struct Settings{
setting1: u32,
setting2: String,
setting3: Vec<bool>,
}

let settings = Settings{
    setting1: 128,
    setting2: "this is a cool setting struct".to_string(),
    setting3: vec![false,true,false,false]
};

save_settings!(settings).expect("Settings were unable to be saved");

// -- snip --

let loaded_settings = load_settings!(Settings).expect("Unable to read settings file");

assert_eq!(settings,loaded_settings);

save_settings!(settings,"cool_filename.ser").expect("Unable to save settings with specific filename");

// -- snip --

let specific_settings_loaded = load_settings!(Settings,"cool_filename.ser").expect("Unable to load settings with specific filename");

assert_eq!(settings,specific_settings_loaded);