@@ -853,20 +853,20 @@ impl<'a> CacheEntry<'a> {
853853 /// We hydrate all mappings eagerly, but we avoid re-hydrating the item index eagerly,
854854 /// since it can be quite large and deserialization can be slow for large crates.
855855 pub ( super ) fn hydrate ( self , package_id : PackageId ) -> Result < RustdocCacheEntry , anyhow:: Error > {
856- let span = tracing :: trace_span! ( "Deserialize delimiters" ) ;
857- let _guard = span . enter ( ) ;
858- let item_id2delimiters =
859- bincode :: serde :: decode_from_slice ( & self . item_id2delimiters , BINCODE_CONFIG )
860- . context ( "Failed to deserialize item_id2delimiters" ) ?
861- . 0 ;
862- drop ( _guard ) ;
863-
864- let span = tracing :: trace_span! ( "Deserialize paths" ) ;
865- let _guard = span . enter ( ) ;
866- let paths = bincode:: serde:: decode_from_slice ( & self . paths , BINCODE_CONFIG )
867- . context ( "Failed to deserialize paths" ) ?
868- . 0 ;
869- drop ( _guard ) ;
856+ let ( item_id2delimiters , paths ) = rayon :: join (
857+ || {
858+ tracing :: trace_span! ( "Deserialize delimiters" )
859+ . in_scope ( || {
860+ bincode :: serde :: decode_from_slice ( & self . item_id2delimiters , BINCODE_CONFIG )
861+ } )
862+ . context ( "Failed to deserialize item_id2delimiters" )
863+ } ,
864+ || {
865+ tracing :: trace_span! ( "Deserialize paths" )
866+ . in_scope ( || bincode:: serde:: decode_from_slice ( & self . paths , BINCODE_CONFIG ) )
867+ . context ( "Failed to deserialize paths" )
868+ } ,
869+ ) ;
870870
871871 let crate_data = CrateData {
872872 root_item_id : rustdoc_types:: Id ( self . root_item_id . to_owned ( ) ) ,
@@ -876,11 +876,11 @@ impl<'a> CacheEntry<'a> {
876876 )
877877 . context ( "Failed to deserialize external_crates" ) ?
878878 . 0 ,
879- paths,
879+ paths : paths? . 0 ,
880880 format_version : self . format_version . try_into ( ) ?,
881881 index : CrateItemIndex :: Lazy ( LazyCrateItemIndex {
882882 items : self . items . into_owned ( ) ,
883- item_id2delimiters,
883+ item_id2delimiters : item_id2delimiters? . 0 ,
884884 } ) ,
885885 } ;
886886 let Some ( secondary_indexes) = self . secondary_indexes else {
@@ -892,24 +892,31 @@ impl<'a> CacheEntry<'a> {
892892 krate : crate_data,
893893 } ;
894894
895- let span = tracing:: trace_span!( "Deserialize import_path2id" ) ;
896- let _guard = span. enter ( ) ;
897- let import_path2id =
898- bincode:: serde:: decode_from_slice ( & secondary_indexes. import_path2id , BINCODE_CONFIG )
899- . context ( "Failed to deserialize import_path2id" ) ?
900- . 0 ;
901- drop ( _guard) ;
895+ let ( import_path2id, import_index) = rayon:: join (
896+ || {
897+ tracing:: trace_span!( "Deserialize import_path2id" )
898+ . in_scope ( || {
899+ bincode:: serde:: decode_from_slice (
900+ & secondary_indexes. import_path2id ,
901+ BINCODE_CONFIG ,
902+ )
903+ } )
904+ . context ( "Failed to deserialize import_path2id" )
905+ } ,
906+ || {
907+ bincode:: serde:: decode_from_slice ( & secondary_indexes. import_index , BINCODE_CONFIG )
908+ . context ( "Failed to deserialize import_index" )
909+ } ,
910+ ) ;
911+
912+ let import_path2id = import_path2id?. 0 ;
913+ let import_index = import_index?. 0 ;
902914
903915 let re_exports =
904916 bincode:: serde:: decode_from_slice ( & secondary_indexes. re_exports , BINCODE_CONFIG )
905917 . context ( "Failed to deserialize re-exports" ) ?
906918 . 0 ;
907919
908- let import_index =
909- bincode:: serde:: decode_from_slice ( & secondary_indexes. import_index , BINCODE_CONFIG )
910- . context ( "Failed to deserialize import_index" ) ?
911- . 0 ;
912-
913920 let annotated_items = if let Some ( data) = secondary_indexes. annotated_items {
914921 bincode:: serde:: decode_from_slice ( & data, BINCODE_CONFIG )
915922 . context ( "Failed to deserialize annotated_items" ) ?
0 commit comments