Crate tower_pipeline[][src]

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

Structs

Pipeline

Two services combined where the response of the first is the request of the second.

ResponseFuture

Response future of Pipeline.

Traits

PipelineExt

An extension trait for easily pipelining Services.