@@ -2,7 +2,7 @@ use crate::{
2
2
client:: Client , errors:: Error , indexes:: Index , request:: HttpClient , DefaultHttpClient ,
3
3
} ;
4
4
use either:: Either ;
5
- use serde:: { de:: DeserializeOwned , ser :: SerializeStruct , Deserialize , Serialize , Serializer } ;
5
+ use serde:: { de:: DeserializeOwned , Deserialize , Serialize , Serializer } ;
6
6
use serde_json:: { Map , Value } ;
7
7
use std:: collections:: HashMap ;
8
8
@@ -611,26 +611,19 @@ impl<'a, Http: HttpClient> SearchQuery<'a, Http> {
611
611
}
612
612
}
613
613
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" ) ]
618
616
pub struct MultiSearchQuery < ' a , ' b , Http : HttpClient = DefaultHttpClient > {
619
- // #[serde(skip_serializing)]
617
+ #[ serde( skip_serializing) ]
620
618
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 = "" ) ) ]
621
624
pub queries : Vec < SearchQuery < ' b , Http > > ,
622
625
}
623
626
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
- }
634
627
635
628
#[ allow( missing_docs) ]
636
629
impl < ' a , ' b , Http : HttpClient > MultiSearchQuery < ' a , ' b , Http > {
0 commit comments