7070}
7171
7272/// Same as `to_bytes` but write directly into an `std::io::Write` object.
73- pub fn serialize_into < W , T > ( write : & mut W , value : & T ) -> Result < ( ) >
73+ pub fn serialize_into < T > ( write : impl std :: io :: Write , value : & T ) -> Result < ( ) >
7474where
75- W : ?Sized + std:: io:: Write ,
7675 T : ?Sized + Serialize ,
7776{
7877 let serializer = Serializer :: new ( write, crate :: MAX_CONTAINER_DEPTH ) ;
8180
8281/// Same as `serialize_into` but use `limit` as max container depth instead of MAX_CONTAINER_DEPTH
8382/// Note that `limit` has to be lower than MAX_CONTAINER_DEPTH
84- pub fn serialize_into_with_limit < W , T > ( write : & mut W , value : & T , limit : usize ) -> Result < ( ) >
83+ pub fn serialize_into_with_limit < T > (
84+ write : impl std:: io:: Write ,
85+ value : & T ,
86+ limit : usize ,
87+ ) -> Result < ( ) >
8588where
86- W : ?Sized + std:: io:: Write ,
8789 T : ?Sized + Serialize ,
8890{
8991 if limit > crate :: MAX_CONTAINER_DEPTH {
@@ -140,17 +142,17 @@ pub fn is_human_readable() -> bool {
140142}
141143
142144/// Serialization implementation for BCS
143- pub struct Serializer < ' a , W : ? Sized > {
144- output : & ' a mut W ,
145+ pub struct Serializer < W > {
146+ output : W ,
145147 max_remaining_depth : usize ,
146148}
147149
148- impl < ' a , W > Serializer < ' a , W >
150+ impl < W > Serializer < W >
149151where
150- W : ? Sized + std:: io:: Write ,
152+ W : std:: io:: Write ,
151153{
152154 /// Creates a new `Serializer` which will emit BCS.
153- pub fn new ( output : & ' a mut W , max_remaining_depth : usize ) -> Self {
155+ pub fn new ( output : W , max_remaining_depth : usize ) -> Self {
154156 Self {
155157 output,
156158 max_remaining_depth,
@@ -190,17 +192,17 @@ where
190192 }
191193}
192194
193- impl < ' a , W > ser:: Serializer for Serializer < ' a , W >
195+ impl < W > ser:: Serializer for Serializer < W >
194196where
195- W : ? Sized + std:: io:: Write ,
197+ W : std:: io:: Write ,
196198{
197199 type Ok = ( ) ;
198200 type Error = Error ;
199201 type SerializeSeq = Self ;
200202 type SerializeTuple = Self ;
201203 type SerializeTupleStruct = Self ;
202204 type SerializeTupleVariant = Self ;
203- type SerializeMap = MapSerializer < ' a , W > ;
205+ type SerializeMap = MapSerializer < W > ;
204206 type SerializeStruct = Self ;
205207 type SerializeStructVariant = Self ;
206208
@@ -228,27 +230,27 @@ where
228230 self . serialize_u128 ( v as u128 )
229231 }
230232
231- fn serialize_u8 ( self , v : u8 ) -> Result < ( ) > {
233+ fn serialize_u8 ( mut self , v : u8 ) -> Result < ( ) > {
232234 self . output . write_all ( & [ v] ) ?;
233235 Ok ( ( ) )
234236 }
235237
236- fn serialize_u16 ( self , v : u16 ) -> Result < ( ) > {
238+ fn serialize_u16 ( mut self , v : u16 ) -> Result < ( ) > {
237239 self . output . write_all ( & v. to_le_bytes ( ) ) ?;
238240 Ok ( ( ) )
239241 }
240242
241- fn serialize_u32 ( self , v : u32 ) -> Result < ( ) > {
243+ fn serialize_u32 ( mut self , v : u32 ) -> Result < ( ) > {
242244 self . output . write_all ( & v. to_le_bytes ( ) ) ?;
243245 Ok ( ( ) )
244246 }
245247
246- fn serialize_u64 ( self , v : u64 ) -> Result < ( ) > {
248+ fn serialize_u64 ( mut self , v : u64 ) -> Result < ( ) > {
247249 self . output . write_all ( & v. to_le_bytes ( ) ) ?;
248250 Ok ( ( ) )
249251 }
250252
251- fn serialize_u128 ( self , v : u128 ) -> Result < ( ) > {
253+ fn serialize_u128 ( mut self , v : u128 ) -> Result < ( ) > {
252254 self . output . write_all ( & v. to_le_bytes ( ) ) ?;
253255 Ok ( ( ) )
254256 }
@@ -283,7 +285,7 @@ where
283285 }
284286
285287 // A present optional is represented as `01` followed by the serialized value
286- fn serialize_some < T > ( self , value : & T ) -> Result < ( ) >
288+ fn serialize_some < T > ( mut self , value : & T ) -> Result < ( ) >
287289 where
288290 T : ?Sized + Serialize ,
289291 {
@@ -403,9 +405,9 @@ where
403405 }
404406}
405407
406- impl < ' a , W > ser:: SerializeSeq for Serializer < ' a , W >
408+ impl < W > ser:: SerializeSeq for Serializer < W >
407409where
408- W : ? Sized + std:: io:: Write ,
410+ W : std:: io:: Write ,
409411{
410412 type Ok = ( ) ;
411413 type Error = Error ;
@@ -414,17 +416,17 @@ where
414416 where
415417 T : ?Sized + Serialize ,
416418 {
417- value. serialize ( Serializer :: new ( self . output , self . max_remaining_depth ) )
419+ value. serialize ( Serializer :: new ( & mut self . output , self . max_remaining_depth ) )
418420 }
419421
420422 fn end ( self ) -> Result < ( ) > {
421423 Ok ( ( ) )
422424 }
423425}
424426
425- impl < ' a , W > ser:: SerializeTuple for Serializer < ' a , W >
427+ impl < W > ser:: SerializeTuple for Serializer < W >
426428where
427- W : ? Sized + std:: io:: Write ,
429+ W : std:: io:: Write ,
428430{
429431 type Ok = ( ) ;
430432 type Error = Error ;
@@ -433,17 +435,17 @@ where
433435 where
434436 T : ?Sized + Serialize ,
435437 {
436- value. serialize ( Serializer :: new ( self . output , self . max_remaining_depth ) )
438+ value. serialize ( Serializer :: new ( & mut self . output , self . max_remaining_depth ) )
437439 }
438440
439441 fn end ( self ) -> Result < ( ) > {
440442 Ok ( ( ) )
441443 }
442444}
443445
444- impl < ' a , W > ser:: SerializeTupleStruct for Serializer < ' a , W >
446+ impl < W > ser:: SerializeTupleStruct for Serializer < W >
445447where
446- W : ? Sized + std:: io:: Write ,
448+ W : std:: io:: Write ,
447449{
448450 type Ok = ( ) ;
449451 type Error = Error ;
@@ -452,17 +454,17 @@ where
452454 where
453455 T : ?Sized + Serialize ,
454456 {
455- value. serialize ( Serializer :: new ( self . output , self . max_remaining_depth ) )
457+ value. serialize ( Serializer :: new ( & mut self . output , self . max_remaining_depth ) )
456458 }
457459
458460 fn end ( self ) -> Result < ( ) > {
459461 Ok ( ( ) )
460462 }
461463}
462464
463- impl < ' a , W > ser:: SerializeTupleVariant for Serializer < ' a , W >
465+ impl < W > ser:: SerializeTupleVariant for Serializer < W >
464466where
465- W : ? Sized + std:: io:: Write ,
467+ W : std:: io:: Write ,
466468{
467469 type Ok = ( ) ;
468470 type Error = Error ;
@@ -471,22 +473,22 @@ where
471473 where
472474 T : ?Sized + Serialize ,
473475 {
474- value. serialize ( Serializer :: new ( self . output , self . max_remaining_depth ) )
476+ value. serialize ( Serializer :: new ( & mut self . output , self . max_remaining_depth ) )
475477 }
476478
477479 fn end ( self ) -> Result < ( ) > {
478480 Ok ( ( ) )
479481 }
480482}
481483
482- pub struct MapSerializer < ' a , W : ? Sized > {
483- serializer : Serializer < ' a , W > ,
484+ pub struct MapSerializer < W > {
485+ serializer : Serializer < W > ,
484486 entries : Vec < ( Vec < u8 > , Vec < u8 > ) > ,
485487 next_key : Option < Vec < u8 > > ,
486488}
487489
488- impl < ' a , W : ? Sized > MapSerializer < ' a , W > {
489- fn new ( serializer : Serializer < ' a , W > ) -> Self {
490+ impl < W > MapSerializer < W > {
491+ fn new ( serializer : Serializer < W > ) -> Self {
490492 MapSerializer {
491493 serializer,
492494 entries : Vec :: new ( ) ,
@@ -495,9 +497,9 @@ impl<'a, W: ?Sized> MapSerializer<'a, W> {
495497 }
496498}
497499
498- impl < ' a , W > ser:: SerializeMap for MapSerializer < ' a , W >
500+ impl < W > ser:: SerializeMap for MapSerializer < W >
499501where
500- W : ? Sized + std:: io:: Write ,
502+ W : std:: io:: Write ,
501503{
502504 type Ok = ( ) ;
503505 type Error = Error ;
@@ -556,9 +558,9 @@ where
556558 }
557559}
558560
559- impl < ' a , W > ser:: SerializeStruct for Serializer < ' a , W >
561+ impl < W > ser:: SerializeStruct for Serializer < W >
560562where
561- W : ? Sized + std:: io:: Write ,
563+ W : std:: io:: Write ,
562564{
563565 type Ok = ( ) ;
564566 type Error = Error ;
@@ -567,17 +569,17 @@ where
567569 where
568570 T : ?Sized + Serialize ,
569571 {
570- value. serialize ( Serializer :: new ( self . output , self . max_remaining_depth ) )
572+ value. serialize ( Serializer :: new ( & mut self . output , self . max_remaining_depth ) )
571573 }
572574
573575 fn end ( self ) -> Result < ( ) > {
574576 Ok ( ( ) )
575577 }
576578}
577579
578- impl < ' a , W > ser:: SerializeStructVariant for Serializer < ' a , W >
580+ impl < W > ser:: SerializeStructVariant for Serializer < W >
579581where
580- W : ? Sized + std:: io:: Write ,
582+ W : std:: io:: Write ,
581583{
582584 type Ok = ( ) ;
583585 type Error = Error ;
@@ -586,7 +588,7 @@ where
586588 where
587589 T : ?Sized + Serialize ,
588590 {
589- value. serialize ( Serializer :: new ( self . output , self . max_remaining_depth ) )
591+ value. serialize ( Serializer :: new ( & mut self . output , self . max_remaining_depth ) )
590592 }
591593
592594 fn end ( self ) -> Result < ( ) > {
0 commit comments