38 lines
941 B
Rust
38 lines
941 B
Rust
|
use crate::language::DebugAsk;
|
||
|
|
||
|
use std::io::{Read, Write};
|
||
|
use std::collections::HashSet;
|
||
|
use std::fs::File;
|
||
|
|
||
|
#[derive(Serialize, Deserialize)]
|
||
|
pub struct SaveOptions {
|
||
|
pub debug_asks: HashSet<DebugAsk>
|
||
|
}
|
||
|
|
||
|
impl SaveOptions {
|
||
|
pub fn save_to_file(&self, filename: &str) {
|
||
|
let res = File::create(filename)
|
||
|
.and_then(|mut file| {
|
||
|
let buf = crate::serde_json::to_string(self).unwrap();
|
||
|
file.write_all(buf.as_bytes())
|
||
|
});
|
||
|
if let Err(err) = res {
|
||
|
println!("Error saving {} file {}", filename, err);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
pub fn load_from_file(filename: &str) -> Result<SaveOptions, ()> {
|
||
|
File::open(filename)
|
||
|
.and_then(|mut file| {
|
||
|
let mut contents = String::new();
|
||
|
file.read_to_string(&mut contents)?;
|
||
|
Ok(contents)
|
||
|
})
|
||
|
.and_then(|contents| {
|
||
|
let output: SaveOptions = crate::serde_json::from_str(&contents)?;
|
||
|
Ok(output)
|
||
|
})
|
||
|
.map_err(|_| ())
|
||
|
}
|
||
|
}
|