Skip to main content

bc_mur/
error.rs

1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum Error {
5    #[error("QR encoding failed: {0}")]
6    QrEncode(String),
7
8    #[error("Image encoding failed: {0}")]
9    ImageEncode(String),
10
11    #[error("SVG rendering failed: {0}")]
12    SvgRender(String),
13
14    #[error("Invalid color: {0}")]
15    InvalidColor(String),
16
17    #[error("Invalid parameter: {0}")]
18    InvalidParameter(String),
19
20    #[error("GIF encoding failed: {0}")]
21    GifEncode(String),
22
23    #[error("ffmpeg not found on PATH — install ffmpeg for ProRes output")]
24    FfmpegNotFound,
25
26    #[error("ffmpeg failed: {0}")]
27    FfmpegFailed(String),
28
29    #[error(
30        "QR code too dense: {module_count} modules exceeds limit of \
31             {max_modules} (reduce data size, lower error correction, \
32             or increase --max-modules)"
33    )]
34    QrCodeTooDense {
35        module_count: usize,
36        max_modules: usize,
37    },
38
39    #[error(
40        "insufficient frames: {requested} requested but message \
41             requires at least {fragments} fragments"
42    )]
43    InsufficientFrames { requested: usize, fragments: usize },
44
45    #[error("IO error: {0}")]
46    Io(#[from] std::io::Error),
47
48    #[error("UR error: {0}")]
49    Ur(#[from] bc_ur::Error),
50}
51
52pub type Result<T> = std::result::Result<T, Error>;