利用failure库配合actix-web,用failure::Error来代表一个最顶层的Error,路由里面返回Result<HttpResponse>,默认的Error是actix-web::Error,actix::Error实现了From<fialure::Error>,就是说failure::Error可以用into()转化成actix-web::Error。
如果自己设计了一个ServerError,先derive(Fail),即是先实现failure库中的Fail trait,就可以和failure:Error自由转化了。
通过ServerError.into()可以转成failure::Error,通过Error.downcast::<ServerError>().unwrap()可以转成ServerError。
这样子错误处理就方便多了,统一管理了。