Skip to content

Commit 8f044fc

Browse files
Replace manual Serialize impl of MultiSearchQuery with derive
1 parent 40f9402 commit 8f044fc

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

@@ -600,26 +600,19 @@ impl<'a, Http: HttpClient> SearchQuery<'a, Http> {
600600
}
601601
}
602602

603-
// TODO: Make it works with the serde derive macro
604-
// #[derive(Debug, Serialize, Clone)]
605-
// #[serde(rename_all = "camelCase")]
606-
#[derive(Debug, Clone)]
603+
#[derive(Debug, Serialize, Clone)]
604+
#[serde(rename_all = "camelCase")]
607605
pub struct MultiSearchQuery<'a, 'b, Http: HttpClient = DefaultHttpClient> {
608-
// #[serde(skip_serializing)]
606+
#[serde(skip_serializing)]
609607
client: &'a Client<Http>,
608+
// The weird `serialize = ""` is actually useful: without it, serde adds the
609+
// bound `Http: Serialize` to the `Serialize` impl block, but that's not
610+
// necessary. `SearchQuery` always implements `Serialize` (regardless of
611+
// type parameter), so no bound is fine.
612+
#[serde(bound(serialize = ""))]
610613
pub queries: Vec<SearchQuery<'b, Http>>,
611614
}
612615

613-
impl<Http: HttpClient> Serialize for MultiSearchQuery<'_, '_, Http> {
614-
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
615-
where
616-
S: Serializer,
617-
{
618-
let mut strukt = serializer.serialize_struct("MultiSearchQuery", 1)?;
619-
strukt.serialize_field("queries", &self.queries)?;
620-
strukt.end()
621-
}
622-
}
623616

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

0 commit comments

Comments
 (0)