#proc-macro #traits #service #middleware #web #arc-service #arc-reactor

impl-service

用于派生 ArcService 特性的过程宏

7 个版本

使用旧的 Rust 2015

0.1.6 2018年9月7日
0.1.5 2018年7月25日
0.1.4 2018年6月6日
0.1.3 2018年5月20日
0.1.0 2018年3月28日

#247#middleware


用于 arc-reactor

自定义许可协议

4KB
68

Arc-reactor

Arc Reactor

A 异步可扩展型的 Rust 网络框架。

Crates.io Released API docs

特性

  • 异步。在 arc reactor 中,Service Handler 默认是异步的。

  • 与 futures-await 集成。The #[service] proc_macro 不仅为您的路由处理程序派生 ArcService 特性,而且还将其标记为 #[async],这样您就可以在路由处理程序中使用 futures 而无需额外的压力。

  • 直观的中间件系统。arc reactor 提供了一个易于理解的中间件系统。请参阅设计规范

  • 简约。arc reactor 被设计成在 tokio 和 hyper 上非常薄的抽象。

  • TLS 支持。易于添加 TLS 支持。

  • 选择使用 Nightly。arc reactor 使用了许多酷炫的功能,包括仅在 nightly 频道中可用的 proc_macros,使用 unstable 功能标志。

安装

将其添加到您的 cargo.toml

arc-reactor = "0.2"

Hello World(默认)

Default

演示(不稳定)

Default

Nightly 使用

最初,arc-reactor 是为 nightly 编译器设计的。但 libprocmacro 中的不稳定性导致它在每次发布新的 nightly 编译器时都会中断。

因此,默认情况下,arc-reactor 不再使用 nightly 编译器,并且可以与稳定编译器一起使用。🎉 这意味着实验性的 nightly 功能,包括过程宏,仅在 unstable 功能标志后面可用。

如果您希望使用带有启用 nightly 编译器和不稳定功能的 arc-reactor:建议您锁定编译器版本。直到 libprocmacro 稳定。

如果您希望使用 arc-reactor 的默认功能

  • 实现了特性 ArcService,用于所有满足签名 Fn(Request, Response) -> FutureResponse 的函数。
  • 实现了特性 MiddleWare<Request>,用于所有满足签名 Fn(Request) -> MiddleWareFuture<Request> 的函数。
  • 实现了特性 MiddleWare<Response>,用于所有满足签名 Fn(Response) -> MiddleWareFuture<Response> 的函数。
  • futures-rs 中重新导出 futures,而不是 futures-await
  • 您将失去在 ServiceHandlers 和 MiddleWares 中对 futures 使用 await! 的能力。
  • 目前,Multipart 的支持是通过不稳定特性实现的,因此您可能需要自己实现。

示例

请查看示例文件夹和 API 文档,以了解 arc reactor 的工作方式。
它有很好的文档,应该能让您迅速上手。

设计

强烈建议您阅读 设计文档,因为它全面介绍了 arc-reactor 的内部结构和所做的设计决策。

贡献

Arc-Reactor 通过中间件进行高度扩展,这些中间件放置在 contrib 模块中。

缺少的一些东西包括

  • 日志记录器
  • WebSocket
  • 支持字节范围头
  • 异步静态文件服务器
  • JSON 主体解析器
  • Multipart 支持

请随时提交 PR。

许可

请参阅 许可

依赖项

~2MB
~47K SLoC