geronimo-captcha 0.2.0

Secure, AI-resistant, JavaScript-free CAPTCHA built in Rust. Confuses bots, but delights humans.
Documentation
use crate::registry::RegistryCheckResult;

use std::error::Error as StdError;
use std::fmt;

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

#[derive(Debug)]
pub enum CaptchaError {
    InvalidInput(&'static str),
    DecodeError(String),
    EncodeError(String),
    Registry(RegistryCheckResult),
    Internal(String),
}

impl fmt::Display for CaptchaError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            CaptchaError::InvalidInput(m) => write!(f, "invalid input: {m}"),
            CaptchaError::DecodeError(m) => write!(f, "decode error: {m}"),
            CaptchaError::EncodeError(m) => write!(f, "encode error: {m}"),
            CaptchaError::Registry(r) => write!(f, "registry error: {r}"),
            CaptchaError::Internal(m) => write!(f, "internal error: {m}"),
        }
    }
}

impl StdError for CaptchaError {}