use std::fs; use anyhow::Result; use serde::{Deserialize, Serialize}; use serde_json::{from_str, to_string, to_string_pretty}; #[derive(Clone, PartialEq, Eq, Deserialize, Serialize, Debug)] pub struct Devices { pub plugs: Vec<(String, bool)>, } impl Devices { pub async fn read(file: &str) -> Result { Ok(from_str(&fs::read_to_string(file)?)?) } #[allow(unused)] pub fn save(&self, file: &str) -> Result<()> { fs::write(file, to_string_pretty(self)?)?; Ok(()) } } #[derive(Debug, Clone, Deserialize, Serialize, Default)] pub struct DevicesWithName { pub plugs: Vec<(String, Option, bool)>, } impl DevicesWithName { pub fn to_json(&self) -> Result { Ok(to_string(self)?) } } #[cfg(test)] mod test { use super::Devices; use anyhow::Result; #[test] fn create_conf() -> Result<()> { let devices = Devices { plugs: vec![("Dev1".to_string(), true), ("Dev2".to_string(), false)], }; devices.save("test_devices.conf") } }