simplisp/error/
wrap_error.rs1use 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}