herolib-sid 0.1.0

SmartID - Short, human-readable, collision-free identifiers
Documentation
//! Error types for SmartID operations

use super::base36::DecodeError;
use thiserror::Error;

/// Errors that can occur during SmartID operations
#[derive(Debug, Error)]
pub enum SidError {
    /// Contributor ID exceeds maximum (998)
    #[error("contributor id {0} exceeds maximum 998")]
    ContributorIdTooLarge(u16),

    /// Space has reached maximum contributors (999)
    #[error("space has reached maximum contributors (999)")]
    MaxContributorsReached,

    /// Invalid SmartID format
    #[error("invalid sid format: {0}")]
    InvalidFormat(String),

    /// Base36 decoding failed
    #[error("base36 decode error: {0}")]
    DecodeError(#[from] DecodeError),

    /// Global ID overflow (exceeded 6-char capacity)
    #[error("global id overflow: value {0} exceeds 6-char capacity")]
    GlobalIdOverflow(u64),

    /// Contributor not registered
    #[error("contributor {0} not registered - call register_contributor first")]
    ContributorNotRegistered(u16),

    /// Invalid counter file format
    #[error("invalid counter file for contributor {0}")]
    InvalidCounterFile(u16),

    /// Invalid config file format
    #[error("invalid config file: {0}")]
    InvalidConfigFile(String),

    /// Invalid name format (not name-fixed)
    #[error("invalid name format: {0}")]
    InvalidName(String),

    /// I/O error during storage operations
    #[error("io error: {0}")]
    IoError(#[from] std::io::Error),

    /// Serialization error
    #[error("serialization error: {0}")]
    SerializationError(String),

    /// Object not found
    #[error("object not found: {0}")]
    NotFound(String),

    /// Storage backend error
    #[error("storage error: {0}")]
    StorageError(String),
}

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