use mingling::{ Groupped, macros::{r_println, renderer}, }; use serde::Serialize; use crate::ThisProgram; #[derive(Groupped)] pub struct IOError { inner: std::io::Error, } impl IOError { pub fn new(error: std::io::Error) -> Self { Self { inner: error } } } impl From for IOError { fn from(error: std::io::Error) -> Self { Self::new(error) } } impl Serialize for IOError { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { use serde::ser::SerializeStruct; let mut state = serializer.serialize_struct("IOError", 2)?; state.serialize_field("kind", &self.inner.kind().to_string())?; state.serialize_field("info", &self.inner.to_string())?; state.end() } } #[renderer] pub fn render_io_error(prev: IOError) { r_println!("{}: {}", prev.inner.kind(), prev.inner.to_string()) }