use borrow_bag::{Append, Handle};
use crate::pipeline::set::{finalize_pipeline_set, new_pipeline_set, PipelineSet};
use crate::pipeline::{NewMiddlewareChain, Pipeline};
pub type SinglePipelineSet<C> = PipelineSet<<() as Append<Pipeline<C>>>::Output>;
pub type SinglePipelineHandle<C> = Handle<Pipeline<C>, <() as Append<Pipeline<C>>>::Navigator>;
pub type SinglePipelineChain<C> = (SinglePipelineHandle<C>, ());
pub fn single_pipeline<C>(c: Pipeline<C>) -> (SinglePipelineChain<C>, SinglePipelineSet<C>)
where
C: NewMiddlewareChain,
{
let pipelines = new_pipeline_set();
let (pipelines, single) = pipelines.add(c);
let pipelines = finalize_pipeline_set(pipelines);
let chain = (single, ());
(chain, pipelines)
}
#[cfg(test)]
mod tests {
use super::*;
use crate::pipeline::new_pipeline;
use crate::router::builder::*;
#[test]
fn test_pipeline_construction() {
let (chain, pipelines) = single_pipeline(new_pipeline().build());
build_router(chain, pipelines, |_route| {});
}
}