2 个版本
0.1.1 | 2023年3月12日 |
---|---|
0.1.0 | 2022年11月19日 |
#53 in #thin
4KB
rocket_error_stack
描述
此软件包提供 rocket_error_stack::Report 和 rocket_error_stack::Result,作为围绕 error_stack::Report 和 error_stack::Result 的薄包装,具有通过 rockets rocket::response::Responder 实现的响应器。
安装
[dependencies]
rocket = { version = "0.5.0-rc.2" }
error-stack = "0.3"
rocket_error_stack = "0.1"
关于所需特实现注意事项
您的报告必须实现 rocket_error_stack::StatusCodeReport 以定义 HTTP 响应代码。
支持版本
此软件包目前支持 rocket 0.5.0-rc.2 和 error-stack 0.3。
使用方法
use std::fmt;
use rocket::http::Status;
use error_stack::{Context, IntoReport, ResultExt};
use std::fs;
use rocket_error_stack::{Result, StatusCodeReport};
#[derive(Debug)]
struct SomeError(pub Status);
impl StatusCodeReport for SomeError {
fn status(&self) -> Status {
self.0
}
}
impl fmt::Display for SomeError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str("Error during request")
}
}
impl Context for SomeError {}
#[get("/")]
fn get() -> Result<(), SomeError> {
fs::read_to_string("nonexistent")
.into_report()
.attach_printable("Something went wrong!")
.change_context(SomeError(Status::InternalServerError))?;
Ok(())
}
依赖关系
~15–50MB
~799K SLoC