1
1
use std:: fmt;
2
2
3
3
use header:: { Header , Headers } ;
4
- use http:: { MessageHead , ResponseHead , Body , RawStatus } ;
4
+ use http:: { MessageHead , ResponseHead , Body } ;
5
5
use status:: StatusCode ;
6
6
use version:: HttpVersion ;
7
7
@@ -10,7 +10,8 @@ pub struct Response<B = Body> {
10
10
version : HttpVersion ,
11
11
headers : Headers ,
12
12
status : StatusCode ,
13
- raw_status : RawStatus ,
13
+ #[ cfg( feature = "raw_status" ) ]
14
+ raw_status : :: http:: RawStatus ,
14
15
body : Option < B > ,
15
16
}
16
17
@@ -42,7 +43,8 @@ impl<B> Response<B> {
42
43
/// This method is only useful when inspecting the raw subject line from
43
44
/// a received response.
44
45
#[ inline]
45
- pub fn status_raw ( & self ) -> & RawStatus { & self . raw_status }
46
+ #[ cfg( feature = "raw_status" ) ]
47
+ pub fn status_raw ( & self ) -> & :: http:: RawStatus { & self . raw_status }
46
48
47
49
/// Set the `StatusCode` for this response.
48
50
#[ inline]
@@ -101,6 +103,19 @@ impl Response<Body> {
101
103
}
102
104
}
103
105
106
+ #[ cfg( not( feature = "raw_status" ) ) ]
107
+ impl < B > Default for Response < B > {
108
+ fn default ( ) -> Response < B > {
109
+ Response :: < B > {
110
+ version : Default :: default ( ) ,
111
+ headers : Default :: default ( ) ,
112
+ status : Default :: default ( ) ,
113
+ body : None ,
114
+ }
115
+ }
116
+ }
117
+
118
+ #[ cfg( feature = "raw_status" ) ]
104
119
impl < B > Default for Response < B > {
105
120
fn default ( ) -> Response < B > {
106
121
Response :: < B > {
@@ -125,6 +140,24 @@ impl fmt::Debug for Response {
125
140
126
141
/// Constructs a response using a received ResponseHead and optional body
127
142
#[ inline]
143
+ #[ cfg( not( feature = "raw_status" ) ) ]
144
+ pub fn from_wire < B > ( incoming : ResponseHead , body : Option < B > ) -> Response < B > {
145
+ let status = incoming. status ( ) ;
146
+ trace ! ( "Response::new" ) ;
147
+ debug ! ( "version={:?}, status={:?}" , incoming. version, status) ;
148
+ debug ! ( "headers={:?}" , incoming. headers) ;
149
+
150
+ Response :: < B > {
151
+ status : status,
152
+ version : incoming. version ,
153
+ headers : incoming. headers ,
154
+ body : body,
155
+ }
156
+ }
157
+
158
+ /// Constructs a response using a received ResponseHead and optional body
159
+ #[ inline]
160
+ #[ cfg( feature = "raw_status" ) ]
128
161
pub fn from_wire < B > ( incoming : ResponseHead , body : Option < B > ) -> Response < B > {
129
162
let status = incoming. status ( ) ;
130
163
trace ! ( "Response::new" ) ;
0 commit comments