diff --git a/src/main.rs b/src/main.rs index 2dbc59a..e3ed136 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ use eframe::egui; +use std::io::Write as _; use billy_sheet::gui::SheetGui; @@ -40,9 +41,20 @@ impl eframe::App for Gui { _frame.close(); } if ui.button("Save in json").clicked() { - let path = std::path::Path::new("./sheet.json"); - if let Err(error) = billy_sheet::sheet::write_sheet(path, &self.sheet) { - println!("{error}"); + let result = serde_json::to_string_pretty(&self.sheet); + match result { + Ok(sheet_str) => { + let path = std::path::Path::new("./sheet.json"); + match std::fs::File::create(path) { + Ok(mut file) => { + if let Err(err) = write!(file, "{}", sheet_str) { + println!("{err}"); + } + } + Err(error) => println!("{error}"), + } + } + Err(error) => println!("{error}"), } } }); diff --git a/src/sheet.rs b/src/sheet.rs index 0021891..c2c6cb3 100644 --- a/src/sheet.rs +++ b/src/sheet.rs @@ -1,7 +1,6 @@ use eframe::egui::widgets::DragValue; use eframe::egui::Ui; use serde::{Deserialize, Serialize}; -use std::io::Write as _; use crate::gui::SheetGui; @@ -37,12 +36,6 @@ pub struct CharacterSheet { money: u32, } -pub fn write_sheet(path: &std::path::Path, sheet: &CharacterSheet) -> std::io::Result<()> { - let sheet_str = serde_json::to_string_pretty(&sheet)?; - let mut file = std::fs::File::create(path)?; - write!(file, "{}", sheet_str) -} - impl CharacterSheet { pub fn character_class(&self) -> &Classe { &self.character_class