From 542923ccef5678d88969816ec661206786ee9549 Mon Sep 17 00:00:00 2001 From: Florent DENEF Date: Wed, 30 Nov 2022 13:32:44 +0100 Subject: [PATCH] Saving file and dealing with all errors. --- src/main.rs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/main.rs b/src/main.rs index ef015e1..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,16 +41,20 @@ impl eframe::App for Gui { _frame.close(); } if ui.button("Save in json").clicked() { - let sheet_str = serde_json::to_string(&self.sheet); - let path = std::path::Path::new("./sheet.json"); - if path.exists() { - if let Err(a) = std::fs::remove_file(path) { - println!("{a}"); - } else { - + 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}"), + } } - } else { - + Err(error) => println!("{error}"), } } });