@@ -43,7 +43,7 @@ impl<'a> SendBody<'a> {
43
43
value : & impl serde:: ser:: Serialize ,
44
44
) -> Result < SendBody < ' static > , crate :: Error > {
45
45
let json = serde_json:: to_vec_pretty ( value) ?;
46
- Ok ( Self :: from_owned_reader ( io:: Cursor :: new ( json) ) )
46
+ Ok ( BodyInner :: ByteVec ( io:: Cursor :: new ( json) ) . into ( ) )
47
47
}
48
48
49
49
pub ( crate ) fn read ( & mut self , buf : & mut [ u8 ] ) -> io:: Result < usize > {
@@ -59,6 +59,8 @@ impl<'a> SendBody<'a> {
59
59
60
60
Ok ( max)
61
61
}
62
+ #[ cfg( feature = "json" ) ]
63
+ BodyInner :: ByteVec ( v) => v. read ( buf) ,
62
64
BodyInner :: Reader ( v) => v. read ( buf) ,
63
65
BodyInner :: OwnedReader ( v) => v. read ( buf) ,
64
66
BodyInner :: Body ( v) => v. read ( buf) ,
@@ -182,6 +184,8 @@ impl<'a> AsSendBody for SendBody<'a> {
182
184
inner : match & mut self . inner {
183
185
BodyInner :: None => BodyInner :: None ,
184
186
BodyInner :: ByteSlice ( v) => BodyInner :: ByteSlice ( v) ,
187
+ #[ cfg( feature = "json" ) ]
188
+ BodyInner :: ByteVec ( v) => BodyInner :: ByteSlice ( v. get_ref ( ) ) ,
185
189
BodyInner :: Reader ( v) => BodyInner :: Reader ( v) ,
186
190
BodyInner :: Body ( v) => BodyInner :: Reader ( v) ,
187
191
BodyInner :: OwnedReader ( v) => BodyInner :: Reader ( v) ,
@@ -194,6 +198,8 @@ impl<'a> AsSendBody for SendBody<'a> {
194
198
pub ( crate ) enum BodyInner < ' a > {
195
199
None ,
196
200
ByteSlice ( & ' a [ u8 ] ) ,
201
+ #[ cfg( feature = "json" ) ]
202
+ ByteVec ( io:: Cursor < Vec < u8 > > ) ,
197
203
Body ( BodyReader < ' a > ) ,
198
204
Reader ( & ' a mut dyn Read ) ,
199
205
OwnedReader ( Box < dyn Read > ) ,
@@ -204,6 +210,8 @@ impl<'a> BodyInner<'a> {
204
210
match self {
205
211
BodyInner :: None => BodyMode :: NoBody ,
206
212
BodyInner :: ByteSlice ( v) => BodyMode :: LengthDelimited ( v. len ( ) as u64 ) ,
213
+ #[ cfg( feature = "json" ) ]
214
+ BodyInner :: ByteVec ( v) => BodyMode :: LengthDelimited ( v. get_ref ( ) . len ( ) as u64 ) ,
207
215
BodyInner :: Body ( v) => v. body_mode ( ) ,
208
216
BodyInner :: Reader ( _) => BodyMode :: Chunked ,
209
217
BodyInner :: OwnedReader ( _) => BodyMode :: Chunked ,
0 commit comments