Allow unsized types in query, form and json

This commit is contained in:
Oliver Schneider
2018-02-01 14:44:39 +01:00
parent f71504c15d
commit f0b774960d
4 changed files with 19 additions and 6 deletions

View File

@@ -144,7 +144,7 @@ impl RequestBuilder {
/// # Errors
/// This method will fail if the object you provide cannot be serialized
/// 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) {
let url = req.url_mut();
let mut pairs = url.query_pairs_mut();
@@ -158,7 +158,7 @@ impl RequestBuilder {
}
/// 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) {
match serde_urlencoded::to_string(form) {
Ok(body) => {
@@ -177,7 +177,7 @@ impl RequestBuilder {
///
/// Serialization can fail if `T`'s implementation of `Serialize` decides to
/// 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) {
match serde_json::to_vec(json) {
Ok(body) => {