File tree Expand file tree Collapse file tree 3 files changed +49
-11
lines changed
Expand file tree Collapse file tree 3 files changed +49
-11
lines changed Original file line number Diff line number Diff line change @@ -7,21 +7,35 @@ use core::fmt;
77/// service without modifying it.
88///
99/// [`Service`]: https://docs.rs/tower-service/latest/tower_service/trait.Service.html
10+ ///
11+ /// # Examples
12+ ///
13+ /// ```rust
14+ /// use tower_layer::Identity;
15+ /// use tower_layer::Layer;
16+ ///
17+ /// let identity = Identity::new();
18+ ///
19+ /// assert_eq!(identity.layer(42), 42);
20+ /// ```
1021#[ derive( Default , Clone ) ]
1122pub struct Identity {
1223 _p : ( ) ,
1324}
1425
1526impl Identity {
16- /// Create a new [`Identity`] value
27+ /// Creates a new [`Identity`].
28+ ///
29+ /// ```rust
30+ /// use tower_layer::Identity;
31+ ///
32+ /// let identity = Identity::new();
33+ /// ```
1734 pub const fn new ( ) -> Identity {
1835 Identity { _p : ( ) }
1936 }
2037}
2138
22- /// Decorates a [`Service`], transforming either the request or the response.
23- ///
24- /// [`Service`]: https://docs.rs/tower-service/latest/tower_service/trait.Service.html
2539impl < S > Layer < S > for Identity {
2640 type Service = S ;
2741
Original file line number Diff line number Diff line change @@ -4,13 +4,17 @@ use core::fmt;
44/// Returns a new [`LayerFn`] that implements [`Layer`] by calling the
55/// given function.
66///
7- /// The [`Layer::layer`] method takes a type implementing [`Service`] and
7+ /// The [`Layer::layer() `] method takes a type implementing [`Service`] and
88/// returns a different type implementing [`Service`]. In many cases, this can
99/// be implemented by a function or a closure. The [`LayerFn`] helper allows
1010/// writing simple [`Layer`] implementations without needing the boilerplate of
1111/// a new struct implementing [`Layer`].
1212///
13- /// # Example
13+ /// [`Service`]: https://docs.rs/tower-service/latest/tower_service/trait.Service.html
14+ /// [`Layer::layer()`]: crate::Layer::layer
15+ ///
16+ /// # Examples
17+ ///
1418/// ```rust
1519/// # use tower::Service;
1620/// # use core::task::{Poll, Context};
@@ -61,9 +65,6 @@ use core::fmt;
6165/// // Wrap our service in a `LogService` so requests are logged.
6266/// let wrapped_service = log_layer.layer(uppercase_service);
6367/// ```
64- ///
65- /// [`Service`]: https://docs.rs/tower-service/latest/tower_service/trait.Service.html
66- /// [`Layer::layer`]: crate::Layer::layer
6768pub fn layer_fn < T > ( f : T ) -> LayerFn < T > {
6869 LayerFn { f }
6970}
Original file line number Diff line number Diff line change 11use super :: Layer ;
22use core:: fmt;
33
4- /// Two middlewares chained together.
4+ /// Two [`Layer`]s chained together.
5+ ///
6+ /// # Examples
7+ ///
8+ /// ```rust
9+ /// use tower_layer::{Stack, layer_fn, Layer};
10+ ///
11+ /// let inner = layer_fn(|service| service+2);
12+ /// let outer = layer_fn(|service| service*2);
13+ ///
14+ /// let inner_outer_stack = Stack::new(inner, outer);
15+ ///
16+ /// // (4 + 2) * 2 = 12
17+ /// // (4 * 2) + 2 = 10
18+ /// assert_eq!(inner_outer_stack.layer(4), 12);
19+ /// ```
520#[ derive( Clone ) ]
621pub struct Stack < Inner , Outer > {
722 inner : Inner ,
823 outer : Outer ,
924}
1025
1126impl < Inner , Outer > Stack < Inner , Outer > {
12- /// Create a new `Stack`.
27+ /// Creates a new [`Stack`].
28+ ///
29+ /// # Examples
30+ ///
31+ /// ```rust
32+ /// use tower_layer::{Stack, Identity};
33+ ///
34+ /// let stack = Stack::new(Identity::new(), Identity::new());
35+ /// ```
1336 pub const fn new ( inner : Inner , outer : Outer ) -> Self {
1437 Stack { inner, outer }
1538 }
You can’t perform that action at this time.
0 commit comments