bc-mur 0.1.0

Multipart UR QR code generator — single-frame and animated fountain-coded QR sequences with optional logo overlay.
Documentation
use thiserror::Error;

#[derive(Debug, Error)]
pub enum Error {
    #[error("QR encoding failed: {0}")]
    QrEncode(String),

    #[error("Image encoding failed: {0}")]
    ImageEncode(String),

    #[error("SVG rendering failed: {0}")]
    SvgRender(String),

    #[error("Invalid color: {0}")]
    InvalidColor(String),

    #[error("Invalid parameter: {0}")]
    InvalidParameter(String),

    #[error("GIF encoding failed: {0}")]
    GifEncode(String),

    #[error("ffmpeg not found on PATH — install ffmpeg for ProRes output")]
    FfmpegNotFound,

    #[error("ffmpeg failed: {0}")]
    FfmpegFailed(String),

    #[error(
        "QR code too dense: {module_count} modules exceeds limit of \
             {max_modules} (reduce data size, lower error correction, \
             or increase --max-modules)"
    )]
    QrCodeTooDense {
        module_count: usize,
        max_modules: usize,
    },

    #[error(
        "insufficient frames: {requested} requested but message \
             requires at least {fragments} fragments"
    )]
    InsufficientFrames { requested: usize, fragments: usize },

    #[error("IO error: {0}")]
    Io(#[from] std::io::Error),

    #[error("UR error: {0}")]
    Ur(#[from] bc_ur::Error),
}

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