redis-client 0.4.0

Redis client in Rust
Documentation
use results::RedisResult;
use std::error;
use std::fmt;
use std::io;
use std::num;
use std::str;
use std::sync::mpsc;

#[derive(Debug)]
pub enum ParsingError {
    BadIdentifier(String),
}

impl fmt::Display for ParsingError {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match *self {
            ParsingError::BadIdentifier(ref err) => write!(f, "Invalid identifer: {}", err),
        }
    }
}

impl error::Error for ParsingError {
    fn description(&self) -> &str {
        match *self {
            ParsingError::BadIdentifier(ref err) => err,
        }
    }

    fn cause(&self) -> Option<&error::Error> {
        match *self {
            ParsingError::BadIdentifier(ref _err) => Some(self),
        }
    }
}

#[derive(Debug)]
pub enum RedisError {
	Io(io::Error),
	Utf8(str::Utf8Error),
    ParseInt(num::ParseIntError),
    Parse(ParsingError),
    Response(String),
    MpscRecv(mpsc::RecvError),
    MpscSendBytes(mpsc::SendError<Vec<u8>>),
    MpscSendCallback(mpsc::SendError<Box<Fn(Result<RedisResult, RedisError>) + Send>>),
}

impl fmt::Display for RedisError {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match *self {
            RedisError::Io(ref err) => write!(f, "IO error: {}", err),
            RedisError::Utf8(ref err) => write!(f, "Utf8 error: {}", err),
            RedisError::ParseInt(ref err) => write!(f, "Parse Int error: {}", err),
            RedisError::Parse(ref err) => write!(f, "Parsing error: {}", err),
            RedisError::Response(ref err) => write!(f, "Response error: {}", err),
            RedisError::MpscRecv(ref err) => write!(f, "MpscRecv error: {}", err),
            RedisError::MpscSendBytes(ref err) => write!(f, "MpscSendBytes error: {}", err),
            RedisError::MpscSendCallback(ref err) => write!(f, "MpscSendCallback error: {}", err),
        }
    }
}

impl error::Error for RedisError {
    fn description(&self) -> &str {
        match *self {
            RedisError::Io(ref err) => err.description(),
            RedisError::Utf8(ref err) => err.description(),
            RedisError::ParseInt(ref err) => err.description(),
            RedisError::Parse(ref err) => err.description(),
            RedisError::Response(ref err) => err,
            RedisError::MpscRecv(ref err) => err.description(),
            RedisError::MpscSendBytes(ref err) => err.description(),
            RedisError::MpscSendCallback(ref err) => err.description(),
        }
    }

    fn cause(&self) -> Option<&error::Error> {
        match *self {
            RedisError::Io(ref err) => Some(err),
            RedisError::Utf8(ref err) => Some(err),
            RedisError::ParseInt(ref err) => Some(err),
            RedisError::Parse(ref err) => Some(err),
            RedisError::Response(ref _err) => Some(self),
            RedisError::MpscRecv(ref err) => Some(err),
            RedisError::MpscSendBytes(ref err) => Some(err),
            RedisError::MpscSendCallback(ref err) => Some(err),
        }
    }
}

impl From<io::Error> for RedisError {
    fn from(err: io::Error) -> RedisError {
        RedisError::Io(err)
    }
}

impl From<str::Utf8Error> for RedisError {
    fn from(err: str::Utf8Error) -> RedisError {
        RedisError::Utf8(err)
    }
}

impl From<num::ParseIntError> for RedisError {
    fn from(err: num::ParseIntError) -> RedisError {
        RedisError::ParseInt(err)
    }
}

impl From<ParsingError> for RedisError {
    fn from(err: ParsingError) -> RedisError {
        RedisError::Parse(err)
    }
}

impl From<String> for RedisError {
    fn from(err: String) -> RedisError {
        RedisError::Response(err)
    }
}

impl From<mpsc::RecvError> for RedisError {
    fn from(err: mpsc::RecvError) -> RedisError {
        RedisError::MpscRecv(err)
    }
}

impl From<mpsc::SendError<Vec<u8>>> for RedisError {
    fn from(err: mpsc::SendError<Vec<u8>>) -> RedisError {
        RedisError::MpscSendBytes(err)
    }
}

impl From<mpsc::SendError<Box<Fn(Result<RedisResult, RedisError>) + Send>>> for RedisError {
    fn from(err: mpsc::SendError<Box<Fn(Result<RedisResult, RedisError>) + Send>>) -> RedisError {
        RedisError::MpscSendCallback(err)
    }
}