2017-12-10 18:09:36 +00:00
|
|
|
|
|
|
|
use std::result;
|
|
|
|
|
2017-12-11 20:15:17 +00:00
|
|
|
use neovim_lib::CallError;
|
2017-12-10 18:09:36 +00:00
|
|
|
|
|
|
|
pub trait ErrorReport<T> {
|
2017-12-11 20:15:17 +00:00
|
|
|
fn report_err(&self);
|
2017-12-10 18:09:36 +00:00
|
|
|
|
2017-12-11 20:15:17 +00:00
|
|
|
fn ok_and_report(self) -> Option<T>;
|
2017-12-10 18:09:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
impl<T> ErrorReport<T> for result::Result<T, CallError> {
|
2017-12-11 20:15:17 +00:00
|
|
|
fn report_err(&self) {
|
2017-12-10 18:09:36 +00:00
|
|
|
if let Err(ref err) = *self {
|
|
|
|
error!("{}", err);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-12-11 20:15:17 +00:00
|
|
|
fn ok_and_report(self) -> Option<T> {
|
|
|
|
self.report_err();
|
2017-12-10 18:09:36 +00:00
|
|
|
self.ok()
|
|
|
|
}
|
|
|
|
}
|