diff --git a/tower/src/util/mod.rs b/tower/src/util/mod.rs index 8af6624d6..839c1ffe3 100644 --- a/tower/src/util/mod.rs +++ b/tower/src/util/mod.rs @@ -48,6 +48,9 @@ use std::future::Future; use crate::layer::util::Identity; +#[cfg(feature = "buffer")] +use crate::buffer::Buffer; + pub mod error { //! Error types @@ -944,6 +947,20 @@ pub trait ServiceExt: tower_service::Service { MapFuture::new(self, f) } + /// Returns a buffered version of this service. + /// + /// See [`Buffer::new()`] for the details. + #[cfg(feature = "buffer")] + fn buffered(self, bound: usize) -> Buffer + where + Self: Send + Sized + 'static, + Self::Future: Send, + Self::Error: Into + Send + Sync, + Request: Send + Sized + 'static, + { + Buffer::new(self, bound) + } + /// Convert the service into a [`Service`] + [`Send`] trait object. /// /// See [`BoxService`] for more details.