1 个不稳定版本
0.1.0 | 2022 年 10 月 11 日 |
---|
#44 in #trillium
8KB
52 行
trillium-error
此包为 trillium Web 框架添加错误处理支持。
由于 Rust 的限制,trillium 目前不支持错误处理。当语言添加能力以表达 for<'a> Fn(&'a Conn) -> impl Future<Output=…> + 'a
的界限时,trillium 将添加对错误处理的第一类支持。更多详情请参阅此处的讨论。在此期间,trillium-error
提供了一个过程宏,以帮助编写具有错误处理的手柄。
用法
请参阅文档。
许可证
Apache 2.0 或 MIT 许可证
lib.rs
:
此包为 trillium Web 框架添加错误处理支持。
由于 Rust 的限制,trillium 目前不支持错误处理。当语言添加能力以表达 for<'a> Fn(&'a Conn) -> impl Future<Output=…> + 'a
的界限时,trillium 将添加对错误处理的第一类支持。在此期间,trillium-error
提供了一个过程宏,以帮助编写具有错误处理的手柄。更多详情请参阅此处的讨论。
use trillium_error::handler;
#[derive(thiserror::Error, Debug)]
pub enum AppError {
#[error("Custom error")]
CustomError,
#[error("IO error")]
IoError(std::io::Error),
}
impl From<std::io::Error> for AppError {
fn from(err: std::io::Error) -> Self {
AppError::IoError(err)
}
}
#[async_trait]
impl Handler for AppError {
async fn run(&self, conn: Conn) -> Conn {
conn.with_status(500).with_body("Internal Server Error")
}
}
#[handler]
async fn helloworld(conn: &mut Conn) -> Result<(), AppError> {
conn.set_status(200);
conn.set_body("hello world");
// Ok(())
Err(AppError::CustomError)
}
fn main() {
trillium_tokio::run(helloworld);
}
依赖项
~1.5MB
~36K SLoC