estring 0.3.0

A simple way to parse a string using type annotations
Documentation
use crate::core::EString;

/// The error type for operations interacting with ``EString``’s fragments.
#[derive(Debug, PartialEq, Eq)]
pub struct Error(pub EString, pub Reason);

/// The reason for the failure to parse.
#[derive(Debug, PartialEq, Eq)]
pub enum Reason {
    /// Cannot split fragment
    Split,
    /// Cannot parse fragment
    Parse,
}

impl std::fmt::Display for Error {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(
            f,
            r#"Failed to parse "{:?}" with reason {:?}"#,
            self.0, self.1
        )
    }
}

impl std::error::Error for Error {}

impl std::ops::Deref for Error {
    type Target = String;

    fn deref(&self) -> &Self::Target {
        &self.0
    }
}