1 use super::Timeout;
2 use std::time::Duration;
3 use tower_layer::Layer;
4 
5 /// Applies a timeout to requests via the supplied inner service.
6 #[derive(Debug, Clone)]
7 pub struct TimeoutLayer {
8     timeout: Duration,
9 }
10 
11 impl TimeoutLayer {
12     /// Create a timeout from a duration
new(timeout: Duration) -> Self13     pub fn new(timeout: Duration) -> Self {
14         TimeoutLayer { timeout }
15     }
16 }
17 
18 impl<S> Layer<S> for TimeoutLayer {
19     type Service = Timeout<S>;
20 
layer(&self, service: S) -> Self::Service21     fn layer(&self, service: S) -> Self::Service {
22         Timeout::new(service, self.timeout)
23     }
24 }
25