samurai/bootstrap/
file.rs1use std::fs::File;
2use std::io::{BufWriter, BufReader};
3use crate::node::Node;
4use crate::error::FileError;
5use serde_json::Value;
6
7pub fn save(path: &str, node_list: &Vec<Node>) -> Result<(), FileError> {
8 let file = match File::create(&path) {
9 Err(_) => return Err(FileError::OpenFile),
10 Ok(file) => file,
11 };
12
13 let writer = BufWriter::new(file);
14 if let Err(_) = serde_json::to_writer_pretty(writer, node_list) {
15 return Err(FileError::SaveData);
16 }
17
18 Ok(())
19}
20
21pub fn load(path: &str) -> Result<Vec<Node>, FileError> {
22 let file = match File::open(&path) {
23 Err(_) => return Err(FileError::OpenFile),
24 Ok(file) => file,
25 };
26
27 let reader = BufReader::new(file);
28
29 match serde_json::from_reader(reader) {
30 Ok(nodes) => Ok(nodes),
31 Err(_) => Err(FileError::LoadData),
32 }
33}