gdritter repos chenoska / master src / graphics / errors.rs
master

Tree @master (Download .tar.gz)

errors.rs @masterraw · history · blame

use glutin;
use imagefmt;
use std::{convert, ffi, io, string};

/// Nine errors should be enough for anyone
#[derive(Debug)]
pub enum Error {
    BadCString,
    InvalidShaderLog,
    CompileError(String),
    LinkError(String),
    GlutinCreation(glutin::CreationError),
    GlutinContext(glutin::ContextError),
    ImageError(imagefmt::Error),
    IOError(io::Error),
    OtherError(String),
}

impl convert::From<glutin::CreationError> for Error {
    fn from(err: glutin::CreationError) -> Error {
        Error::GlutinCreation(err)
    }
}

impl convert::From<glutin::ContextError> for Error {
    fn from(err: glutin::ContextError) -> Error {
        Error::GlutinContext(err)
    }
}

impl convert::From<ffi::NulError> for Error {
    fn from(_: ffi::NulError) -> Error {
        Error::BadCString
    }
}

impl convert::From<string::FromUtf8Error> for Error {
    fn from(_: string::FromUtf8Error) -> Error {
        Error::InvalidShaderLog
    }
}

impl convert::From<imagefmt::Error> for Error {
    fn from(image_error: imagefmt::Error) -> Error {
        Error::ImageError(image_error)
    }
}

impl convert::From<io::Error> for Error {
    fn from(io_error: io::Error) -> Error {
        Error::IOError(io_error)
    }
}