Skip to content

Commit 922d264

Browse files
Replace manual Serialize impl of MultiSearchQuery with derive
1 parent 90a153c commit 922d264

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

src/search.rs

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::{
22
client::Client, errors::Error, indexes::Index, request::HttpClient, DefaultHttpClient,
33
};
44
use either::Either;
5-
use serde::{de::DeserializeOwned, ser::SerializeStruct, Deserialize, Serialize, Serializer};
5+
use serde::{de::DeserializeOwned, Deserialize, Serialize, Serializer};
66
use serde_json::{Map, Value};
77
use std::collections::HashMap;
88

@@ -611,26 +611,19 @@ impl<'a, Http: HttpClient> SearchQuery<'a, Http> {
611611
}
612612
}
613613

614-
// TODO: Make it works with the serde derive macro
615-
// #[derive(Debug, Serialize, Clone)]
616-
// #[serde(rename_all = "camelCase")]
617-
#[derive(Debug, Clone)]
614+
#[derive(Debug, Serialize, Clone)]
615+
#[serde(rename_all = "camelCase")]
618616
pub struct MultiSearchQuery<'a, 'b, Http: HttpClient = DefaultHttpClient> {
619-
// #[serde(skip_serializing)]
617+
#[serde(skip_serializing)]
620618
client: &'a Client<Http>,
619+
// The weird `serialize = ""` is actually useful: without it, serde adds the
620+
// bound `Http: Serialize` to the `Serialize` impl block, but that's not
621+
// necessary. `SearchQuery` always implements `Serialize` (regardless of
622+
// type parameter), so no bound is fine.
623+
#[serde(bound(serialize = ""))]
621624
pub queries: Vec<SearchQuery<'b, Http>>,
622625
}
623626

624-
impl<Http: HttpClient> Serialize for MultiSearchQuery<'_, '_, Http> {
625-
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
626-
where
627-
S: Serializer,
628-
{
629-
let mut strukt = serializer.serialize_struct("MultiSearchQuery", 1)?;
630-
strukt.serialize_field("queries", &self.queries)?;
631-
strukt.end()
632-
}
633-
}
634627

635628
#[allow(missing_docs)]
636629
impl<'a, 'b, Http: HttpClient> MultiSearchQuery<'a, 'b, Http> {

0 commit comments

Comments
 (0)