@@ -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
@@ -591,26 +591,19 @@ impl<'a, Http: HttpClient> SearchQuery<'a, Http> {
591
591
}
592
592
}
593
593
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" ) ]
598
596
pub struct MultiSearchQuery < ' a , ' b , Http : HttpClient = DefaultHttpClient > {
599
- // #[serde(skip_serializing)]
597
+ #[ serde( skip_serializing) ]
600
598
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 = "" ) ) ]
601
604
pub queries : Vec < SearchQuery < ' b , Http > > ,
602
605
}
603
606
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
- }
614
607
615
608
#[ allow( missing_docs) ]
616
609
impl < ' a , ' b , Http : HttpClient > MultiSearchQuery < ' a , ' b , Http > {
0 commit comments