@@ -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
@@ -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" ) ]
607605pub 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) ]
625618impl < ' a , ' b , Http : HttpClient > MultiSearchQuery < ' a , ' b , Http > {
0 commit comments