1use tower::layer::util::Stack;
4use tower::ServiceBuilder;
5
6use crate::api;
7use crate::service::pool;
8
9pub trait ServiceBuilderExt<L> {
10 fn api<R, C>(self) -> ServiceBuilder<Stack<api::Layer<R, C>, L>>;
13}
14
15pub trait ServicePoolBuilderExt<L> {
16 fn pooled<T, Req>(
18 self,
19 count: usize,
20 target: T,
21 ) -> ServiceBuilder<Stack<pool::Layer<T, Req>, L>>;
22}
23
24impl<L> ServiceBuilderExt<L> for ServiceBuilder<L> {
25 fn api<R, C>(self) -> ServiceBuilder<Stack<api::Layer<R, C>, L>> {
26 self.layer(api::Layer::default())
27 }
28}
29
30impl<L> ServicePoolBuilderExt<L> for ServiceBuilder<L> {
31 fn pooled<T, Req>(
32 self,
33 count: usize,
34 target: T,
35 ) -> ServiceBuilder<Stack<pool::Layer<T, Req>, L>> {
36 self.layer(pool::Layer::with_size(count, target))
37 }
38}