tower-pipeline

Crates.iotower-pipeline
lib.rstower-pipeline
version0.1.0
sourcesrc
created_at2021-02-06 20:56:44.885159
updated_at2021-02-06 20:56:44.885159
descriptionA Tower Service combinator that "pipelines" two services
homepagehttps://github.com/davidpdrsn/tower-pipeline
repositoryhttps://github.com/davidpdrsn/tower-pipeline
max_upload_size
id351670
size11,162
David Pedersen (davidpdrsn)

documentation

https://docs.rs/tower-pipeline/0.1.0

README

tower-pipeline

A Tower Service combinator that "pipelines" two services.

A [Pipeline] is a Service consisting of two other Services where the response of the first is the request of the second. This is analagous to function composition but for services.

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);

License: MIT

Commit count: 3

cargo fmt