#tower-service #service #future #async

tower-pipeline

A Tower Service组合器,通过"管道"连接两个服务

1个不稳定版本

0.1.0 2021年2月6日

#1244 in 异步

MIT许可证

10KB
142

tower-pipeline

一个Tower Service组合器,通过"管道"连接两个服务。

Pipeline是一个由两个其他Service组成的Service,其中第一个服务的响应是第二个服务的请求。这类似于函数组合,但用于服务。

use tower_pipeline::PipelineExt;
use tower::{service_fn, BoxError, ServiceExt};

// service that returns the length of a string
let length_svc = service_fn(|input: &'static str| async move {
    Ok::<_, BoxError>(input.len())
});

// service that doubles its input
let double_svc = service_fn(|input: usize| async move {
    Ok::<_, BoxError>(input * 2)
});

// combine our two services
let combined = length_svc.pipeline(double_svc);

// call the service
let result = combined.oneshot("rust").await.unwrap();

assert_eq!(result, 8);

许可证:MIT


lib.rs:

一个Tower Service组合器,通过"管道"连接两个服务。

Pipeline是一个由两个其他Service组成的Service,其中第一个服务的响应是第二个服务的请求。这类似于函数组合,但用于服务。

use tower_pipeline::PipelineExt;
use tower::{service_fn, BoxError, ServiceExt};

// service that returns the length of a string
let length_svc = service_fn(|input: &'static str| async move {
    Ok::<_, BoxError>(input.len())
});

// service that doubles its input
let double_svc = service_fn(|input: usize| async move {
    Ok::<_, BoxError>(input * 2)
});

// combine our two services
let combined = length_svc.pipeline(double_svc);

// call the service
let result = combined.oneshot("rust").await.unwrap();

assert_eq!(result, 8);

依赖

~730KB
~14K SLoC