@@ -2,7 +2,7 @@ use crate::{
22 client:: Client , errors:: Error , indexes:: Index , request:: HttpClient , DefaultHttpClient ,
33} ;
44use either:: Either ;
5- use serde:: { de:: DeserializeOwned , ser :: SerializeStruct , Deserialize , Serialize , Serializer } ;
5+ use serde:: { de:: DeserializeOwned , Deserialize , Serialize , Serializer } ;
66use serde_json:: { Map , Value } ;
77use 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" ) ]
618616pub 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) ]
636629impl < ' a , ' b , Http : HttpClient > MultiSearchQuery < ' a , ' b , Http > {
0 commit comments