chore: ron 0.9 update

This commit is contained in:
Victoria Brekenfeld 2025-01-22 19:28:56 +01:00 committed by Victoria Brekenfeld
parent abda6619ff
commit d9b15f1eb3

View file

@ -33,6 +33,7 @@ use std::{
cell::RefCell,
collections::{BTreeMap, HashMap},
fs::OpenOptions,
io::Write,
path::PathBuf,
sync::{atomic::AtomicBool, Arc, RwLock},
};
@ -600,7 +601,15 @@ impl<'a, T: Serialize> std::ops::DerefMut for PersistenceGuard<'a, T> {
impl<'a, T: Serialize> Drop for PersistenceGuard<'a, T> {
fn drop(&mut self) {
if let Some(path) = self.0.as_ref() {
let writer = match OpenOptions::new()
let content = match ron::ser::to_string_pretty(&self.1, Default::default()) {
Ok(content) => content,
Err(err) => {
warn!("Failed to serialize: {:?}", err);
return;
}
};
let mut writer = match OpenOptions::new()
.create(true)
.truncate(true)
.write(true)
@ -612,8 +621,11 @@ impl<'a, T: Serialize> Drop for PersistenceGuard<'a, T> {
return;
}
};
if let Err(err) = ron::ser::to_writer_pretty(writer, &self.1, Default::default()) {
if let Err(err) = writer.write_all(content.as_bytes()) {
warn!(?err, "Failed to persist {}", path.display());
} else {
let _ = writer.flush();
}
}
}