Skip to content

Commit a906bad

Browse files
authored
Merge pull request http-rs#333 from Fishrock123/request-query-deserialize-borrowed
Request: allow Deserialize<'de> for .query()
2 parents 96030f7 + f5d310a commit a906bad

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/request.rs

+15-1
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,8 @@ impl Request {
620620
/// use http_types::Request;
621621
/// use std::collections::HashMap;
622622
///
623+
/// // An owned structure:
624+
///
623625
/// #[derive(Deserialize)]
624626
/// # #[serde(crate = "serde_crate")]
625627
/// struct Index {
@@ -632,9 +634,21 @@ impl Request {
632634
/// assert_eq!(page, 2);
633635
/// assert_eq!(selections["width"], "narrow");
634636
/// assert_eq!(selections["height"], "tall");
637+
///
638+
/// // Using borrows:
639+
///
640+
/// #[derive(Deserialize)]
641+
/// # #[serde(crate = "serde_crate")]
642+
/// struct Query<'q> {
643+
/// format: &'q str,
644+
/// }
645+
///
646+
/// let mut req = Request::get("https://httpbin.org/get?format=bananna");
647+
/// let Query { format } = req.query().unwrap();
648+
/// assert_eq!(format, "bananna");
635649
/// ```
636650
#[cfg(feature = "serde")]
637-
pub fn query<T: serde_crate::de::DeserializeOwned>(&self) -> crate::Result<T> {
651+
pub fn query<'de, T: serde_crate::de::Deserialize<'de>>(&'de self) -> crate::Result<T> {
638652
// Default to an empty query string if no query parameter has been specified.
639653
// This allows successful deserialisation of structs where all fields are optional
640654
// when none of those fields has actually been passed by the caller.

0 commit comments

Comments
 (0)