use std::{io, result};
use thiserror::Error;
pub type Result<T> = result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum Error {
#[error("out of bounds index {index} exceeds length {length} in {name}")]
OutOfBounds {
index: usize,
length: usize,
name: String,
},
#[error("render error: {0}")]
Render(#[from] cairo::Error),
#[error("cairo I/O error")]
CairoIO(#[from] cairo::IoError),
#[error("file I/O error")]
FileIO(#[from] io::Error),
#[error("invalid shape parameters")]
InvalidShape,
#[error("invalid color parameters")]
InvalidColor,
}