@@ -841,7 +841,7 @@ mod async_tests {
841841
842842 struct MetadataFetchFn < F > ( F ) ;
843843
844- impl < ' a , F , Fut > MetadataFetch for & ' a mut MetadataFetchFn < F >
844+ impl < F , Fut > MetadataFetch for MetadataFetchFn < F >
845845 where
846846 F : FnMut ( Range < usize > ) -> Fut + Send ,
847847 Fut : Future < Output = Result < Bytes > > + Send ,
@@ -870,68 +870,74 @@ mod async_tests {
870870 let expected = expected. file_metadata ( ) . schema ( ) ;
871871 let fetch_count = AtomicUsize :: new ( 0 ) ;
872872
873- let fetch = |range| {
873+ let mut fetch = |range| {
874874 fetch_count. fetch_add ( 1 , Ordering :: SeqCst ) ;
875875 futures:: future:: ready ( read_range ( & mut file, range) )
876876 } ;
877877
878- let mut f = MetadataFetchFn ( fetch) ;
878+ let input = MetadataFetchFn ( & mut fetch) ;
879879 let actual = ParquetMetaDataReader :: new ( )
880- . load_and_finish ( & mut f , len)
880+ . load_and_finish ( input , len)
881881 . await
882882 . unwrap ( ) ;
883883 assert_eq ! ( actual. file_metadata( ) . schema( ) , expected) ;
884884 assert_eq ! ( fetch_count. load( Ordering :: SeqCst ) , 2 ) ;
885885
886886 // Metadata hint too small - below footer size
887887 fetch_count. store ( 0 , Ordering :: SeqCst ) ;
888+ let input = MetadataFetchFn ( & mut fetch) ;
888889 let actual = ParquetMetaDataReader :: new ( )
889890 . with_prefetch_hint ( Some ( 7 ) )
890- . load_and_finish ( & mut f , len)
891+ . load_and_finish ( input , len)
891892 . await
892893 . unwrap ( ) ;
893894 assert_eq ! ( actual. file_metadata( ) . schema( ) , expected) ;
894895 assert_eq ! ( fetch_count. load( Ordering :: SeqCst ) , 2 ) ;
895896
896897 // Metadata hint too small
897898 fetch_count. store ( 0 , Ordering :: SeqCst ) ;
899+ let input = MetadataFetchFn ( & mut fetch) ;
898900 let actual = ParquetMetaDataReader :: new ( )
899901 . with_prefetch_hint ( Some ( 10 ) )
900- . load_and_finish ( & mut f , len)
902+ . load_and_finish ( input , len)
901903 . await
902904 . unwrap ( ) ;
903905 assert_eq ! ( actual. file_metadata( ) . schema( ) , expected) ;
904906 assert_eq ! ( fetch_count. load( Ordering :: SeqCst ) , 2 ) ;
905907
906908 // Metadata hint too large
907909 fetch_count. store ( 0 , Ordering :: SeqCst ) ;
910+ let input = MetadataFetchFn ( & mut fetch) ;
908911 let actual = ParquetMetaDataReader :: new ( )
909912 . with_prefetch_hint ( Some ( 500 ) )
910- . load_and_finish ( & mut f , len)
913+ . load_and_finish ( input , len)
911914 . await
912915 . unwrap ( ) ;
913916 assert_eq ! ( actual. file_metadata( ) . schema( ) , expected) ;
914917 assert_eq ! ( fetch_count. load( Ordering :: SeqCst ) , 1 ) ;
915918
916919 // Metadata hint exactly correct
917920 fetch_count. store ( 0 , Ordering :: SeqCst ) ;
921+ let input = MetadataFetchFn ( & mut fetch) ;
918922 let actual = ParquetMetaDataReader :: new ( )
919923 . with_prefetch_hint ( Some ( 428 ) )
920- . load_and_finish ( & mut f , len)
924+ . load_and_finish ( input , len)
921925 . await
922926 . unwrap ( ) ;
923927 assert_eq ! ( actual. file_metadata( ) . schema( ) , expected) ;
924928 assert_eq ! ( fetch_count. load( Ordering :: SeqCst ) , 1 ) ;
925929
930+ let input = MetadataFetchFn ( & mut fetch) ;
926931 let err = ParquetMetaDataReader :: new ( )
927- . load_and_finish ( & mut f , 4 )
932+ . load_and_finish ( input , 4 )
928933 . await
929934 . unwrap_err ( )
930935 . to_string ( ) ;
931936 assert_eq ! ( err, "EOF: file size of 4 is less than footer" ) ;
932937
938+ let input = MetadataFetchFn ( & mut fetch) ;
933939 let err = ParquetMetaDataReader :: new ( )
934- . load_and_finish ( & mut f , 20 )
940+ . load_and_finish ( input , 20 )
935941 . await
936942 . unwrap_err ( )
937943 . to_string ( ) ;
@@ -948,39 +954,42 @@ mod async_tests {
948954 futures:: future:: ready ( read_range ( & mut file, range) )
949955 } ;
950956
951- let mut f = MetadataFetchFn ( & mut fetch) ;
957+ let f = MetadataFetchFn ( & mut fetch) ;
952958 let mut loader = ParquetMetaDataReader :: new ( ) . with_page_indexes ( true ) ;
953- loader. try_load ( & mut f, len) . await . unwrap ( ) ;
959+ loader. try_load ( f, len) . await . unwrap ( ) ;
954960 assert_eq ! ( fetch_count. load( Ordering :: SeqCst ) , 3 ) ;
955961 let metadata = loader. finish ( ) . unwrap ( ) ;
956962 assert ! ( metadata. offset_index( ) . is_some( ) && metadata. column_index( ) . is_some( ) ) ;
957963
958964 // Prefetch just footer exactly
959965 fetch_count. store ( 0 , Ordering :: SeqCst ) ;
966+ let f = MetadataFetchFn ( & mut fetch) ;
960967 let mut loader = ParquetMetaDataReader :: new ( )
961968 . with_page_indexes ( true )
962969 . with_prefetch_hint ( Some ( 1729 ) ) ;
963- loader. try_load ( & mut f, len) . await . unwrap ( ) ;
970+ loader. try_load ( f, len) . await . unwrap ( ) ;
964971 assert_eq ! ( fetch_count. load( Ordering :: SeqCst ) , 2 ) ;
965972 let metadata = loader. finish ( ) . unwrap ( ) ;
966973 assert ! ( metadata. offset_index( ) . is_some( ) && metadata. column_index( ) . is_some( ) ) ;
967974
968975 // Prefetch more than footer but not enough
969976 fetch_count. store ( 0 , Ordering :: SeqCst ) ;
977+ let f = MetadataFetchFn ( & mut fetch) ;
970978 let mut loader = ParquetMetaDataReader :: new ( )
971979 . with_page_indexes ( true )
972980 . with_prefetch_hint ( Some ( 130649 ) ) ;
973- loader. try_load ( & mut f, len) . await . unwrap ( ) ;
981+ loader. try_load ( f, len) . await . unwrap ( ) ;
974982 assert_eq ! ( fetch_count. load( Ordering :: SeqCst ) , 2 ) ;
975983 let metadata = loader. finish ( ) . unwrap ( ) ;
976984 assert ! ( metadata. offset_index( ) . is_some( ) && metadata. column_index( ) . is_some( ) ) ;
977985
978986 // Prefetch exactly enough
979987 fetch_count. store ( 0 , Ordering :: SeqCst ) ;
988+ let f = MetadataFetchFn ( & mut fetch) ;
980989 let metadata = ParquetMetaDataReader :: new ( )
981990 . with_page_indexes ( true )
982991 . with_prefetch_hint ( Some ( 130650 ) )
983- . load_and_finish ( & mut f, len)
992+ . load_and_finish ( f, len)
984993 . await
985994 . unwrap ( ) ;
986995 assert_eq ! ( fetch_count. load( Ordering :: SeqCst ) , 1 ) ;
0 commit comments