pinyin-converter 0.1.0

Fast, dictionary-backed Chinese to Pinyin conversion for Rust and the command line.
Documentation
use thiserror::Error;

#[derive(Debug, Error, PartialEq, Eq)]
pub enum PinyinError {
    #[error("input is too long: {actual} bytes, max {max} bytes")]
    InputTooLong { actual: usize, max: usize },

    #[error("invalid max input length: {0}")]
    InvalidMaxInputLength(usize),

    #[error("invalid permalink delimiter: {0:?}")]
    InvalidDelimiter(String),

    #[error("invalid input: {0}")]
    InvalidInput(String),

    #[error("configuration error: {0}")]
    ConfigError(String),
}

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

impl PinyinError {
    pub(crate) fn invalid_delimiter(delimiter: &str) -> Self {
        Self::InvalidDelimiter(delimiter.to_string())
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn formats_errors() {
        assert_eq!(
            PinyinError::InputTooLong { actual: 10, max: 3 }.to_string(),
            "input is too long: 10 bytes, max 3 bytes"
        );
        assert_eq!(
            PinyinError::invalid_delimiter("=").to_string(),
            "invalid permalink delimiter: \"=\""
        );
    }
}