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