sdformat-rs 0.1.0

SDFormat parser for Rust.
Documentation
use thiserror::Error;

pub type Result<T> = std::result::Result<T, SdfError>;

#[derive(Debug, Error)]
#[error(transparent)]
pub struct SdfError(#[from] ErrorKind);

#[derive(Debug, Error)]
pub(crate) enum ErrorKind {
    #[error(transparent)]
    File(#[from] std::io::Error),
    #[error(transparent)]
    Xml(#[from] serde_xml_rs::Error),
    #[error(transparent)]
    RustyXml(#[from] xml::BuilderError),
    #[error("command error {}", .0)]
    Command(String),
}

impl SdfError {
    pub(crate) fn new(err: impl Into<ErrorKind>) -> Self {
        Self(err.into())
    }
}

impl From<std::io::Error> for SdfError {
    fn from(err: std::io::Error) -> SdfError {
        ErrorKind::File(err).into()
    }
}

impl From<&str> for SdfError {
    fn from(err: &str) -> SdfError {
        ErrorKind::Command(err.to_owned()).into()
    }
}

impl From<std::string::FromUtf8Error> for SdfError {
    fn from(err: std::string::FromUtf8Error) -> SdfError {
        ErrorKind::Command(err.to_string()).into()
    }
}