@@ -6,14 +6,15 @@ use std::ops::Index;
6
6
use std:: pin:: Pin ;
7
7
use std:: task:: { Context , Poll } ;
8
8
9
+ #[ cfg( feature = "serde" ) ]
9
10
use crate :: convert:: { DeserializeOwned , Serialize } ;
10
11
use crate :: headers:: {
11
12
self , HeaderName , HeaderValue , HeaderValues , Headers , Names , ToHeaderValues , Values ,
12
13
CONTENT_TYPE ,
13
14
} ;
14
15
use crate :: mime:: Mime ;
15
16
use crate :: trailers:: { self , Trailers } ;
16
- use crate :: { Body , Extensions , Method , StatusCode , Url , Version } ;
17
+ use crate :: { Body , Extensions , Method , Url , Version } ;
17
18
18
19
pin_project_lite:: pin_project! {
19
20
/// An HTTP request.
@@ -349,6 +350,7 @@ impl Request {
349
350
/// use http_types::{Body, Request};
350
351
///
351
352
/// #[derive(Debug, Serialize, Deserialize)]
353
+ /// # #[serde(crate = "serde_crate")]
352
354
/// struct Cat {
353
355
/// name: String,
354
356
/// }
@@ -363,6 +365,7 @@ impl Request {
363
365
/// assert_eq!(&cat.name, "chashu");
364
366
/// # Ok(()) }) }
365
367
/// ```
368
+ #[ cfg( feature = "serde" ) ]
366
369
pub async fn body_json < T : DeserializeOwned > ( & mut self ) -> crate :: Result < T > {
367
370
let body = self . take_body ( ) ;
368
371
body. into_json ( ) . await
@@ -383,6 +386,7 @@ impl Request {
383
386
/// use http_types::{Body, Request};
384
387
///
385
388
/// #[derive(Debug, Serialize, Deserialize)]
389
+ /// # #[serde(crate = "serde_crate")]
386
390
/// struct Cat {
387
391
/// name: String,
388
392
/// }
@@ -397,6 +401,7 @@ impl Request {
397
401
/// assert_eq!(&cat.name, "chashu");
398
402
/// # Ok(()) }) }
399
403
/// ```
404
+ #[ cfg( feature = "serde" ) ]
400
405
pub async fn body_form < T : DeserializeOwned > ( & mut self ) -> crate :: Result < T > {
401
406
let body = self . take_body ( ) ;
402
407
body. into_form ( ) . await
@@ -616,6 +621,7 @@ impl Request {
616
621
/// use std::collections::HashMap;
617
622
///
618
623
/// #[derive(Deserialize)]
624
+ /// # #[serde(crate = "serde_crate")]
619
625
/// struct Index {
620
626
/// page: u32,
621
627
/// selections: HashMap<String, String>,
@@ -627,15 +633,16 @@ impl Request {
627
633
/// assert_eq!(selections["width"], "narrow");
628
634
/// assert_eq!(selections["height"], "tall");
629
635
/// ```
630
- pub fn query < T : serde:: de:: DeserializeOwned > ( & self ) -> crate :: Result < T > {
636
+ #[ cfg( feature = "serde" ) ]
637
+ pub fn query < T : serde_crate:: de:: DeserializeOwned > ( & self ) -> crate :: Result < T > {
631
638
// Default to an empty query string if no query parameter has been specified.
632
639
// This allows successful deserialisation of structs where all fields are optional
633
640
// when none of those fields has actually been passed by the caller.
634
641
let query = self . url ( ) . query ( ) . unwrap_or ( "" ) ;
635
642
serde_qs:: from_str ( query) . map_err ( |e| {
636
643
// Return the displayable version of the deserialisation error to the caller
637
644
// for easier debugging.
638
- crate :: Error :: from_str ( StatusCode :: BadRequest , format ! ( "{}" , e) )
645
+ crate :: Error :: from_str ( crate :: StatusCode :: BadRequest , format ! ( "{}" , e) )
639
646
} )
640
647
}
641
648
@@ -649,6 +656,7 @@ impl Request {
649
656
/// use std::collections::HashMap;
650
657
///
651
658
/// #[derive(Serialize)]
659
+ /// # #[serde(crate = "serde_crate")]
652
660
/// struct Index {
653
661
/// page: u32,
654
662
/// topics: Vec<&'static str>,
@@ -659,9 +667,10 @@ impl Request {
659
667
/// req.set_query(&query).unwrap();
660
668
/// assert_eq!(req.url().query(), Some("page=2&topics[0]=rust&topics[1]=crabs&topics[2]=crustaceans"));
661
669
/// ```
670
+ #[ cfg( feature = "serde" ) ]
662
671
pub fn set_query ( & mut self , query : & impl Serialize ) -> crate :: Result < ( ) > {
663
672
let query = serde_qs:: to_string ( query)
664
- . map_err ( |e| crate :: Error :: from_str ( StatusCode :: BadRequest , format ! ( "{}" , e) ) ) ?;
673
+ . map_err ( |e| crate :: Error :: from_str ( crate :: StatusCode :: BadRequest , format ! ( "{}" , e) ) ) ?;
665
674
self . url . set_query ( Some ( & query) ) ;
666
675
Ok ( ( ) )
667
676
}
0 commit comments