Skip to content

Commit 8ce4d17

Browse files
Replace manual Serialize impl of MultiSearchQuery with derive
1 parent 9f2e427 commit 8ce4d17

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

@@ -591,26 +591,19 @@ impl<'a, Http: HttpClient> SearchQuery<'a, Http> {
591591
}
592592
}
593593

594-
// TODO: Make it works with the serde derive macro
595-
// #[derive(Debug, Serialize, Clone)]
596-
// #[serde(rename_all = "camelCase")]
597-
#[derive(Debug, Clone)]
594+
#[derive(Debug, Serialize, Clone)]
595+
#[serde(rename_all = "camelCase")]
598596
pub struct MultiSearchQuery<'a, 'b, Http: HttpClient = DefaultHttpClient> {
599-
// #[serde(skip_serializing)]
597+
#[serde(skip_serializing)]
600598
client: &'a Client<Http>,
599+
// The weird `serialize = ""` is actually useful: without it, serde adds the
600+
// bound `Http: Serialize` to the `Serialize` impl block, but that's not
601+
// necessary. `SearchQuery` always implements `Serialize` (regardless of
602+
// type parameter), so no bound is fine.
603+
#[serde(bound(serialize = ""))]
601604
pub queries: Vec<SearchQuery<'b, Http>>,
602605
}
603606

604-
impl<'a, 'b, Http: HttpClient> Serialize for MultiSearchQuery<'a, 'b, Http> {
605-
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
606-
where
607-
S: Serializer,
608-
{
609-
let mut strukt = serializer.serialize_struct("MultiSearchQuery", 1)?;
610-
strukt.serialize_field("queries", &self.queries)?;
611-
strukt.end()
612-
}
613-
}
614607

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

0 commit comments

Comments
 (0)