jsave 0.2.1

Persist serializable in-memory data in JSON format
Documentation
#![doc = include_str!("../README.md")]

pub mod mutex;
pub mod remutex;
pub mod rwlock;

pub use crate::{mutex::Mutex, remutex::ReentrantMutex, rwlock::RwLock};

use serde::{Deserialize, Serialize};
use std::{fs::OpenOptions, io::Result, path::Path};

fn save_data_to_path<T>(data: &T, path: &Path) -> Result<()>
where
    T: Serialize + for<'de> Deserialize<'de> + ?Sized,
{
    let file = OpenOptions::new().write(true).truncate(true).open(&path)?;

    #[cfg(feature = "pretty")]
    serde_json::to_writer_pretty(file, data)?;

    #[cfg(not(feature = "pretty"))]
    serde_json::to_writer(file, data)?;

    Ok(())
}