@@ -6,7 +6,7 @@ use std::ops::Index;
6
6
use std:: pin:: Pin ;
7
7
use std:: task:: { Context , Poll } ;
8
8
9
- use crate :: convert:: { DeserializeOwned , Serialize } ;
9
+ use crate :: convert:: { Deserialize , DeserializeOwned , Serialize } ;
10
10
use crate :: headers:: {
11
11
self , HeaderName , HeaderValue , HeaderValues , Headers , Names , ToHeaderValues , Values ,
12
12
CONTENT_TYPE ,
@@ -615,6 +615,8 @@ impl Request {
615
615
/// use http_types::Request;
616
616
/// use std::collections::HashMap;
617
617
///
618
+ /// // An owned structure:
619
+ ///
618
620
/// #[derive(Deserialize)]
619
621
/// struct Index {
620
622
/// page: u32,
@@ -626,8 +628,19 @@ impl Request {
626
628
/// assert_eq!(page, 2);
627
629
/// assert_eq!(selections["width"], "narrow");
628
630
/// assert_eq!(selections["height"], "tall");
631
+ ///
632
+ /// // Using borrows:
633
+ ///
634
+ /// #[derive(Deserialize)]
635
+ /// struct Query<'q> {
636
+ /// format: &'q str,
637
+ /// }
638
+ ///
639
+ /// let mut req = Request::get("https://httpbin.org/get?format=bananna");
640
+ /// let Query { format } = req.query().unwrap();
641
+ /// assert_eq!(format, "bananna");
629
642
/// ```
630
- pub fn query < T : serde :: de :: DeserializeOwned > ( & self ) -> crate :: Result < T > {
643
+ pub fn query < ' de , T : Deserialize < ' de > > ( & ' de self ) -> crate :: Result < T > {
631
644
// Default to an empty query string if no query parameter has been specified.
632
645
// This allows successful deserialisation of structs where all fields are optional
633
646
// when none of those fields has actually been passed by the caller.
0 commit comments