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

Download history 2/week @ 2024-03-07 32/week @ 2024-03-28 6/week @ 2024-04-04

每月54次 下载
用于 spirit

Apache-2.0 OR MIT

435KB
5.5K SLoC

Spirit-hyper

Travis Build Status

提供几个辅助工具,以便轻松将 hyper 与由 spirit 系统管理的配置集成。

请参阅 文档示例

许可证

根据以下任一许可证授权:

由您选择。

贡献

除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据 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