@@ -523,26 +523,7 @@ impl Encode for Metadata {
523
523
& self ,
524
524
encoder : & mut E ,
525
525
) -> Result < ( ) , bincode:: error:: EncodeError > {
526
- // Handle HashMap fields with special attributes
527
- let metadata: Option < BTreeMap < & String , & String > > = self . metadata . as_ref ( ) . map ( |map| {
528
- let mut entries: Vec < _ > = map. iter ( ) . collect ( ) ;
529
- entries. sort_by_key ( |( k, _) | * k) ;
530
- entries. into_iter ( ) . collect :: < BTreeMap < _ , _ > > ( )
531
- } ) ;
532
- #[ cfg( feature = "std" ) ]
533
- bincode:: Encode :: encode ( & metadata, encoder) ?;
534
- #[ cfg( not( feature = "std" ) ) ]
535
- bincode:: serde:: encode_into_writer (
536
- & metadata,
537
- encoder. writer ( ) ,
538
- bincode:: config:: standard ( ) ,
539
- ) ?;
540
-
541
- let mut buffer = Vec :: with_capacity ( self . tensors . len ( ) ) ;
542
-
543
- for _ in 0 ..self . tensors . len ( ) {
544
- buffer. push ( None ) ;
545
- }
526
+ let mut buffer = vec ! [ None ; self . tensors. len( ) ] ;
546
527
547
528
for ( key, & index) in & self . index_map {
548
529
buffer[ index] = Some ( ( key, & self . tensors [ index] ) ) ;
@@ -551,7 +532,13 @@ impl Encode for Metadata {
551
532
let header: Vec < ( & String , & TensorInfo ) > =
552
533
buffer. into_iter ( ) . map ( |item| item. unwrap ( ) ) . collect ( ) ;
553
534
554
- bincode:: Encode :: encode ( & header, encoder)
535
+ let metadata: Option < BTreeMap < & String , & String > > = self . metadata . as_ref ( ) . map ( |map| {
536
+ let mut entries: Vec < _ > = map. iter ( ) . collect ( ) ;
537
+ entries. sort_by_key ( |( k, _) | * k) ;
538
+ entries. into_iter ( ) . collect :: < BTreeMap < _ , _ > > ( )
539
+ } ) ;
540
+
541
+ bincode:: Encode :: encode ( & ( metadata, header) , encoder)
555
542
}
556
543
}
557
544
@@ -562,9 +549,9 @@ impl<Context> Decode<Context> for Metadata {
562
549
#[ cfg( feature = "std" ) ]
563
550
let metadata = bincode:: Decode :: decode ( decoder) ?;
564
551
#[ cfg( not( feature = "std" ) ) ]
565
- let metadata = bincode:: serde:: decode_from_reader (
552
+ let metadata: Option < HashMap < String , String > > = bincode:: serde:: decode_from_reader (
566
553
decoder. reader ( ) ,
567
- bincode:: config:: standard ( ) . with_limit :: < { MAX_HEADER_SIZE } > ( ) ,
554
+ bincode:: config:: standard ( ) . with_limit :: < { MAX_HEADER_SIZE / 2 } > ( ) ,
568
555
) ?;
569
556
570
557
let buffer: Vec < ( String , TensorInfo ) > = bincode:: Decode :: decode ( decoder) ?;
0 commit comments