14 个版本 (8 个破坏性更新)
0.9.0 | 2021年4月3日 |
---|---|
0.8.1 | 2021年1月10日 |
0.7.1 | 2020年10月28日 |
0.6.0 | 2019年10月19日 |
0.2.0 | 2018年10月15日 |
#5 in #spirit
每月54次 下载
用于 spirit
435KB
5.5K SLoC
Spirit-hyper
提供几个辅助工具,以便轻松将 hyper 与由 spirit 系统管理的配置集成。
许可证
根据以下任一许可证授权:
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据 Apache-2.0 许可证的定义,都应按上述方式双重授权,不附加任何额外条款或条件。
lib.rs
:
[Spirit][spirit] 对 Hyper 服务器进行扩展。
这允许从配置自动生成 Hyper 服务器。可以将它们放置在任意流式 I/O 对象(TcpStream、UdsStream、这些被 SSL 包装)之上。
Tokio 运行时
底层使用 spirit_tokio
crate。与初始化运行时的缺点相似,这里也存在(请参阅 spirit_tokio
文档以获取详细信息)。
示例
use hyper::{Body, Request, Response};
use serde::Deserialize;
use spirit::{Empty, Pipeline, Spirit};
use spirit::prelude::*;
use spirit_hyper::{server_from_handler, BuildServer, HttpServer};
const DEFAULT_CONFIG: &str = r#"
[server]
port = 2234
"#;
#[derive(Default, Deserialize)]
struct Config {
server: HttpServer,
}
impl Config {
fn server(&self) -> HttpServer {
self.server.clone()
}
}
async fn request(_req: Request<Body>) -> Response<Body> {
Response::new(Body::from("Hello world\n"))
}
fn main() {
Spirit::<Empty, Config>::new()
.config_defaults(DEFAULT_CONFIG)
.with(
// Let's build a http server as configured by the user
Pipeline::new("listen")
.extract_cfg(Config::server)
// This is where we teach the server what it serves. It is the usual stuff from
// hyper.
.transform(BuildServer(server_from_handler(request)))
)
.run(|spirit| {
Ok(())
});
}
更多示例(具有更灵活的处理)可以在 git 仓库 中找到。
依赖关系
~11–23MB
~285K SLoC