Allow unsized types in query, form and json
This commit is contained in:
@@ -41,6 +41,10 @@ unstable = []
|
|||||||
name = "simple"
|
name = "simple"
|
||||||
path = "examples/simple.rs"
|
path = "examples/simple.rs"
|
||||||
|
|
||||||
|
[[example]]
|
||||||
|
name = "form"
|
||||||
|
path = "examples/form.rs"
|
||||||
|
|
||||||
[[example]]
|
[[example]]
|
||||||
name = "async"
|
name = "async"
|
||||||
path = "examples/async.rs"
|
path = "examples/async.rs"
|
||||||
|
|||||||
9
examples/form.rs
Normal file
9
examples/form.rs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
extern crate reqwest;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
reqwest::Client::new()
|
||||||
|
.post("http://www.baidu.com")
|
||||||
|
.form(&[("one", "1")])
|
||||||
|
.send()
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
@@ -144,7 +144,7 @@ impl RequestBuilder {
|
|||||||
/// # Errors
|
/// # Errors
|
||||||
/// This method will fail if the object you provide cannot be serialized
|
/// This method will fail if the object you provide cannot be serialized
|
||||||
/// into a query string.
|
/// into a query string.
|
||||||
pub fn query<T: Serialize>(&mut self, query: &T) -> &mut RequestBuilder {
|
pub fn query<T: Serialize + ?Sized>(&mut self, query: &T) -> &mut RequestBuilder {
|
||||||
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
||||||
let url = req.url_mut();
|
let url = req.url_mut();
|
||||||
let mut pairs = url.query_pairs_mut();
|
let mut pairs = url.query_pairs_mut();
|
||||||
@@ -158,7 +158,7 @@ impl RequestBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Send a form body.
|
/// Send a form body.
|
||||||
pub fn form<T: Serialize>(&mut self, form: &T) -> &mut RequestBuilder {
|
pub fn form<T: Serialize + ?Sized>(&mut self, form: &T) -> &mut RequestBuilder {
|
||||||
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
||||||
match serde_urlencoded::to_string(form) {
|
match serde_urlencoded::to_string(form) {
|
||||||
Ok(body) => {
|
Ok(body) => {
|
||||||
@@ -177,7 +177,7 @@ impl RequestBuilder {
|
|||||||
///
|
///
|
||||||
/// Serialization can fail if `T`'s implementation of `Serialize` decides to
|
/// Serialization can fail if `T`'s implementation of `Serialize` decides to
|
||||||
/// fail, or if `T` contains a map with non-string keys.
|
/// fail, or if `T` contains a map with non-string keys.
|
||||||
pub fn json<T: Serialize>(&mut self, json: &T) -> &mut RequestBuilder {
|
pub fn json<T: Serialize + ?Sized>(&mut self, json: &T) -> &mut RequestBuilder {
|
||||||
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
||||||
match serde_json::to_vec(json) {
|
match serde_json::to_vec(json) {
|
||||||
Ok(body) => {
|
Ok(body) => {
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ impl RequestBuilder {
|
|||||||
/// # Errors
|
/// # Errors
|
||||||
/// This method will fail if the object you provide cannot be serialized
|
/// This method will fail if the object you provide cannot be serialized
|
||||||
/// into a query string.
|
/// into a query string.
|
||||||
pub fn query<T: Serialize>(&mut self, query: &T) -> &mut RequestBuilder {
|
pub fn query<T: Serialize + ?Sized>(&mut self, query: &T) -> &mut RequestBuilder {
|
||||||
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
||||||
let url = req.url_mut();
|
let url = req.url_mut();
|
||||||
let mut pairs = url.query_pairs_mut();
|
let mut pairs = url.query_pairs_mut();
|
||||||
@@ -279,7 +279,7 @@ impl RequestBuilder {
|
|||||||
///
|
///
|
||||||
/// This method fails if the passed value cannot be serialized into
|
/// This method fails if the passed value cannot be serialized into
|
||||||
/// url encoded format
|
/// url encoded format
|
||||||
pub fn form<T: Serialize>(&mut self, form: &T) -> &mut RequestBuilder {
|
pub fn form<T: Serialize + ?Sized>(&mut self, form: &T) -> &mut RequestBuilder {
|
||||||
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
||||||
match serde_urlencoded::to_string(form) {
|
match serde_urlencoded::to_string(form) {
|
||||||
Ok(body) => {
|
Ok(body) => {
|
||||||
@@ -317,7 +317,7 @@ impl RequestBuilder {
|
|||||||
///
|
///
|
||||||
/// Serialization can fail if `T`'s implementation of `Serialize` decides to
|
/// Serialization can fail if `T`'s implementation of `Serialize` decides to
|
||||||
/// fail, or if `T` contains a map with non-string keys.
|
/// fail, or if `T` contains a map with non-string keys.
|
||||||
pub fn json<T: Serialize>(&mut self, json: &T) -> &mut RequestBuilder {
|
pub fn json<T: Serialize + ?Sized>(&mut self, json: &T) -> &mut RequestBuilder {
|
||||||
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
if let Some(req) = request_mut(&mut self.request, &self.err) {
|
||||||
match serde_json::to_vec(json) {
|
match serde_json::to_vec(json) {
|
||||||
Ok(body) => {
|
Ok(body) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user