@@ -5,47 +5,47 @@ use std::error::Error;
5
5
use conduit:: { Request , Response , Handler } ;
6
6
7
7
pub trait Middleware : Send + Sync + ' static {
8
- fn before ( & self , _: & mut Request ) -> Result < ( ) , Box < Error +Send > > {
8
+ fn before ( & self , _: & mut dyn Request ) -> Result < ( ) , Box < dyn Error +Send > > {
9
9
Ok ( ( ) )
10
10
}
11
11
12
- fn after ( & self , _: & mut Request , res : Result < Response , Box < Error +Send > > )
13
- -> Result < Response , Box < Error +Send > >
12
+ fn after ( & self , _: & mut dyn Request , res : Result < Response , Box < dyn Error +Send > > )
13
+ -> Result < Response , Box < dyn Error +Send > >
14
14
{
15
15
res
16
16
}
17
17
}
18
18
19
19
pub trait AroundMiddleware : Handler {
20
- fn with_handler ( & mut self , handler : Box < Handler > ) ;
20
+ fn with_handler ( & mut self , handler : Box < dyn Handler > ) ;
21
21
}
22
22
23
23
pub struct MiddlewareBuilder {
24
- middlewares : Vec < Box < Middleware > > ,
25
- handler : Option < Box < Handler > >
24
+ middlewares : Vec < Box < dyn Middleware > > ,
25
+ handler : Option < Box < dyn Handler > >
26
26
}
27
27
28
28
impl MiddlewareBuilder {
29
29
pub fn new < H : Handler > ( handler : H ) -> MiddlewareBuilder {
30
30
MiddlewareBuilder {
31
31
middlewares : vec ! ( ) ,
32
- handler : Some ( Box :: new ( handler) as Box < Handler > )
32
+ handler : Some ( Box :: new ( handler) as Box < dyn Handler > )
33
33
}
34
34
}
35
35
36
36
pub fn add < M : Middleware > ( & mut self , middleware : M ) {
37
- self . middlewares . push ( Box :: new ( middleware) as Box < Middleware > ) ;
37
+ self . middlewares . push ( Box :: new ( middleware) as Box < dyn Middleware > ) ;
38
38
}
39
39
40
40
pub fn around < M : AroundMiddleware > ( & mut self , mut middleware : M ) {
41
41
let handler = self . handler . take ( ) . unwrap ( ) ;
42
42
middleware. with_handler ( handler) ;
43
- self . handler = Some ( Box :: new ( middleware) as Box < Handler > ) ;
43
+ self . handler = Some ( Box :: new ( middleware) as Box < dyn Handler > ) ;
44
44
}
45
45
}
46
46
47
47
impl Handler for MiddlewareBuilder {
48
- fn call ( & self , req : & mut Request ) -> Result < Response , Box < Error +Send > > {
48
+ fn call ( & self , req : & mut dyn Request ) -> Result < Response , Box < dyn Error +Send > > {
49
49
let mut error = None ;
50
50
51
51
for ( i, middleware) in self . middlewares . iter ( ) . enumerate ( ) {
@@ -73,10 +73,10 @@ impl Handler for MiddlewareBuilder {
73
73
}
74
74
}
75
75
76
- fn run_afters ( middleware : & [ Box < Middleware > ] ,
77
- req : & mut Request ,
78
- res : Result < Response , Box < Error +Send > > )
79
- -> Result < Response , Box < Error +Send > >
76
+ fn run_afters ( middleware : & [ Box < dyn Middleware > ] ,
77
+ req : & mut dyn Request ,
78
+ res : Result < Response , Box < dyn Error +Send > > )
79
+ -> Result < Response , Box < dyn Error +Send > >
80
80
{
81
81
middleware. iter ( ) . rev ( ) . fold ( res, |res, m| m. after ( req, res) )
82
82
}
@@ -125,8 +125,8 @@ mod tests {
125
125
fn query_string < ' a > ( & ' a self ) -> Option < & ' a str > { unimplemented ! ( ) }
126
126
fn remote_addr ( & self ) -> SocketAddr { unimplemented ! ( ) }
127
127
fn content_length ( & self ) -> Option < u64 > { unimplemented ! ( ) }
128
- fn headers < ' a > ( & ' a self ) -> & ' a Headers { unimplemented ! ( ) }
129
- fn body < ' a > ( & ' a mut self ) -> & ' a mut Read { unimplemented ! ( ) }
128
+ fn headers < ' a > ( & ' a self ) -> & ' a dyn Headers { unimplemented ! ( ) }
129
+ fn body < ' a > ( & ' a mut self ) -> & ' a mut dyn Read { unimplemented ! ( ) }
130
130
fn extensions < ' a > ( & ' a self ) -> & ' a Extensions {
131
131
& self . extensions
132
132
}
@@ -138,7 +138,7 @@ mod tests {
138
138
struct MyMiddleware ;
139
139
140
140
impl Middleware for MyMiddleware {
141
- fn before < ' a > ( & self , req : & ' a mut Request ) -> Result < ( ) , Box < Error +Send > > {
141
+ fn before < ' a > ( & self , req : & ' a mut dyn Request ) -> Result < ( ) , Box < dyn Error +Send > > {
142
142
req. mut_extensions ( ) . insert ( "hello" . to_string ( ) ) ;
143
143
Ok ( ( ) )
144
144
}
@@ -147,11 +147,11 @@ mod tests {
147
147
struct ErrorRecovery ;
148
148
149
149
impl Middleware for ErrorRecovery {
150
- fn after ( & self , _: & mut Request , res : Result < Response , Box < Error +Send > > )
151
- -> Result < Response , Box < Error +Send > >
150
+ fn after ( & self , _: & mut dyn Request , res : Result < Response , Box < dyn Error +Send > > )
151
+ -> Result < Response , Box < dyn Error +Send > >
152
152
{
153
153
res. or_else ( |e| {
154
- let e = e. description ( ) . to_string ( ) ;
154
+ let e = e. to_string ( ) ;
155
155
Ok ( Response {
156
156
status : ( 500 , "Internal Server Error" ) ,
157
157
headers : HashMap :: new ( ) ,
@@ -164,16 +164,16 @@ mod tests {
164
164
struct ProducesError ;
165
165
166
166
impl Middleware for ProducesError {
167
- fn before ( & self , _: & mut Request ) -> Result < ( ) , Box < Error +Send > > {
167
+ fn before ( & self , _: & mut dyn Request ) -> Result < ( ) , Box < dyn Error +Send > > {
168
168
Err ( Box :: new ( io:: Error :: new ( io:: ErrorKind :: Other , "" ) ) )
169
169
}
170
170
}
171
171
172
172
struct NotReached ;
173
173
174
174
impl Middleware for NotReached {
175
- fn after ( & self , _: & mut Request , _: Result < Response , Box < Error +Send > > )
176
- -> Result < Response , Box < Error +Send > >
175
+ fn after ( & self , _: & mut dyn Request , _: Result < Response , Box < dyn Error +Send > > )
176
+ -> Result < Response , Box < dyn Error +Send > >
177
177
{
178
178
Ok ( Response {
179
179
status : ( 200 , "OK" ) ,
@@ -184,7 +184,7 @@ mod tests {
184
184
}
185
185
186
186
struct MyAroundMiddleware {
187
- handler : Option < Box < Handler > >
187
+ handler : Option < Box < dyn Handler > >
188
188
}
189
189
190
190
impl MyAroundMiddleware {
@@ -196,19 +196,19 @@ mod tests {
196
196
impl Middleware for MyAroundMiddleware { }
197
197
198
198
impl AroundMiddleware for MyAroundMiddleware {
199
- fn with_handler ( & mut self , handler : Box < Handler > ) {
199
+ fn with_handler ( & mut self , handler : Box < dyn Handler > ) {
200
200
self . handler = Some ( handler)
201
201
}
202
202
}
203
203
204
204
impl Handler for MyAroundMiddleware {
205
- fn call ( & self , req : & mut Request ) -> Result < Response , Box < Error +Send > > {
205
+ fn call ( & self , req : & mut dyn Request ) -> Result < Response , Box < dyn Error +Send > > {
206
206
req. mut_extensions ( ) . insert ( "hello" . to_string ( ) ) ;
207
207
self . handler . as_ref ( ) . unwrap ( ) . call ( req)
208
208
}
209
209
}
210
210
211
- fn get_extension < ' a , T : Any > ( req : & ' a Request ) -> & ' a T {
211
+ fn get_extension < ' a , T : Any > ( req : & ' a dyn Request ) -> & ' a T {
212
212
req. extensions ( ) . find :: < T > ( ) . unwrap ( )
213
213
}
214
214
@@ -220,16 +220,16 @@ mod tests {
220
220
}
221
221
}
222
222
223
- fn handler ( req : & mut Request ) -> io:: Result < Response > {
223
+ fn handler ( req : & mut dyn Request ) -> io:: Result < Response > {
224
224
let hello = get_extension :: < String > ( req) ;
225
225
Ok ( response ( hello. clone ( ) ) )
226
226
}
227
227
228
- fn error_handler ( _: & mut Request ) -> io:: Result < Response > {
228
+ fn error_handler ( _: & mut dyn Request ) -> io:: Result < Response > {
229
229
Err ( io:: Error :: new ( io:: ErrorKind :: Other , "Error in handler" ) )
230
230
}
231
231
232
- fn middle_handler ( req : & mut Request ) -> io:: Result < Response > {
232
+ fn middle_handler ( req : & mut dyn Request ) -> io:: Result < Response > {
233
233
let hello = get_extension :: < String > ( req) ;
234
234
let middle = get_extension :: < String > ( req) ;
235
235
0 commit comments