serde_rw 0.3.0

Extend serde serializers and deserializers with the ability to read / write different file formats from / to files
Documentation
use serde::{de, ser};
use std::fmt::{Display, Formatter};

#[derive(Debug)]
pub enum Error {
    IoError(std::io::Error),
    InvalidExtension(Option<String>),
    SerializationError(Box<dyn ser::StdError>),
    DeserializationError(Box<dyn de::StdError>),
}

impl Display for Error {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        match self {
            Self::IoError(error) => write!(f, "{error}"),
            Self::InvalidExtension(string) => write!(
                f,
                r#"Invalid extension: "{}""#,
                string.as_deref().unwrap_or("")
            ),
            Self::SerializationError(error) | Self::DeserializationError(error) => {
                write!(f, "{error}")
            }
        }
    }
}