simplisp/error/
wrap_error.rs

1use std::error::Error;
2use error::Error as LispError;
3use error::ErrorKind as LispErrorKind;
4use error::Result as LispResult;
5
6pub trait WrapError {
7    fn wrap_error_to_err<TResult>(self) -> LispResult<TResult>;
8
9    fn wrap_error_to_error(self) -> LispError;
10}
11
12impl <TError> WrapError for TError
13    where TError: Error + Send + 'static {
14    fn wrap_error_to_err<TResult>(self) -> LispResult<TResult> {
15        Err(self.wrap_error_to_error())
16    }
17
18    fn wrap_error_to_error(self) -> LispError {
19        let err = Box::new(self);
20        LispErrorKind::ErrorWrapper(err).into()
21    }
22}