File tree Expand file tree Collapse file tree 2 files changed +39
-22
lines changed Expand file tree Collapse file tree 2 files changed +39
-22
lines changed Original file line number Diff line number Diff line change 11use std:: io:: Write ;
22use std:: fmt:: Display ;
33
4- use serde:: ser:: { self , Impossible , Serialize , SerializeSeq } ;
4+ use serde:: ser:: { self , Impossible , Serialize } ;
55
66use error:: { Error , ErrorKind , Result } ;
77use self :: var:: { Map , Struct } ;
8+ use self :: seq:: Seq ;
89
910mod var;
11+ mod seq;
1012
1113
1214/// A convenience method for serializing some object to a buffer.
@@ -234,7 +236,7 @@ where
234236 }
235237
236238 fn serialize_seq ( self , len : Option < usize > ) -> Result < Self :: SerializeSeq > {
237- Ok ( Seq { parent : self } )
239+ Ok ( Seq :: new ( self ) )
238240 }
239241
240242 fn serialize_tuple ( self , len : usize ) -> Result < Self :: SerializeTuple > {
@@ -285,26 +287,6 @@ where
285287 }
286288}
287289
288- pub struct Seq < ' a , W : ' a + Write > {
289- parent : & ' a mut Serializer < W > ,
290- }
291-
292- impl < ' a , W : Write > SerializeSeq for Seq < ' a , W > {
293- type Ok = ( ) ;
294- type Error = Error ;
295-
296- fn serialize_element < T : ?Sized > ( & mut self , value : & T ) -> Result < Self :: Ok >
297- where
298- T : Serialize ,
299- {
300- value. serialize ( & mut * self . parent )
301- }
302-
303- fn end ( self ) -> Result < Self :: Ok > {
304- Ok ( ( ) )
305- }
306- }
307-
308290
309291#[ cfg( test) ]
310292mod tests {
Original file line number Diff line number Diff line change 1+ use std:: io:: Write ;
2+ use serde:: ser:: { Serialize , SerializeSeq } ;
3+
4+ use ser:: Serializer ;
5+ use error:: { Error , Result } ;
6+
7+ pub struct Seq < ' a , W : ' a + Write > {
8+ parent : & ' a mut Serializer < W > ,
9+ }
10+
11+
12+ impl < ' w , W > Seq < ' w , W >
13+ where
14+ W : ' w + Write ,
15+ {
16+ pub fn new ( parent : & ' w mut Serializer < W > ) -> Seq < ' w , W > {
17+ Seq { parent }
18+ }
19+ }
20+
21+ impl < ' a , W : Write > SerializeSeq for Seq < ' a , W > {
22+ type Ok = ( ) ;
23+ type Error = Error ;
24+
25+ fn serialize_element < T : ?Sized > ( & mut self , value : & T ) -> Result < Self :: Ok >
26+ where
27+ T : Serialize ,
28+ {
29+ value. serialize ( & mut * self . parent )
30+ }
31+
32+ fn end ( self ) -> Result < Self :: Ok > {
33+ Ok ( ( ) )
34+ }
35+ }
You can’t perform that action at this time.
0 commit comments