@@ -391,10 +391,11 @@ impl Statistics {
391391 /// For example, if we had statistics for columns `{"a", "b", "c"}`,
392392 /// projecting to `vec![2, 1]` would return statistics for columns `{"c",
393393 /// "b"}`.
394- pub fn project ( mut self , projection : Option < & [ usize ] > ) -> Self {
394+ pub fn project ( mut self , projection : Option < impl AsRef < [ usize ] > > ) -> Self {
395395 let Some ( projection) = projection else {
396396 return self ;
397397 } ;
398+ let projection = projection. as_ref ( ) ;
398399
399400 #[ expect( clippy:: large_enum_variant) ]
400401 enum Slot {
@@ -1066,28 +1067,29 @@ mod tests {
10661067
10671068 #[ test]
10681069 fn test_project_none ( ) {
1069- let stats = make_stats ( vec ! [ 10 , 20 , 30 ] ) . project ( None ) ;
1070+ let projection: Option < Vec < _ > > = None ;
1071+ let stats = make_stats ( vec ! [ 10 , 20 , 30 ] ) . project ( projection) ;
10701072 assert_eq ! ( stats, make_stats( vec![ 10 , 20 , 30 ] ) ) ;
10711073 }
10721074
10731075 #[ test]
10741076 fn test_project_empty ( ) {
1075- let projection: Option < & [ _ ] > = Some ( & [ ] ) ;
1076- let stats = make_stats ( vec ! [ 10 , 20 , 30 ] ) . project ( projection) ;
1077+ let projection = Some ( vec ! [ ] ) ;
1078+ let stats = make_stats ( vec ! [ 10 , 20 , 30 ] ) . project ( projection. as_ref ( ) ) ;
10771079 assert_eq ! ( stats, make_stats( vec![ ] ) ) ;
10781080 }
10791081
10801082 #[ test]
10811083 fn test_project_swap ( ) {
1082- let projection: Option < & [ _ ] > = Some ( & [ 2 , 1 ] ) ;
1083- let stats = make_stats ( vec ! [ 10 , 20 , 30 ] ) . project ( projection) ;
1084+ let projection = Some ( vec ! [ 2 , 1 ] ) ;
1085+ let stats = make_stats ( vec ! [ 10 , 20 , 30 ] ) . project ( projection. as_ref ( ) ) ;
10841086 assert_eq ! ( stats, make_stats( vec![ 30 , 20 ] ) ) ;
10851087 }
10861088
10871089 #[ test]
10881090 fn test_project_repeated ( ) {
1089- let projection: Option < & [ _ ] > = Some ( & [ 1 , 2 , 1 , 1 , 0 , 2 ] ) ;
1090- let stats = make_stats ( vec ! [ 10 , 20 , 30 ] ) . project ( projection) ;
1091+ let projection = Some ( vec ! [ 1 , 2 , 1 , 1 , 0 , 2 ] ) ;
1092+ let stats = make_stats ( vec ! [ 10 , 20 , 30 ] ) . project ( projection. as_ref ( ) ) ;
10911093 assert_eq ! ( stats, make_stats( vec![ 20 , 30 , 20 , 20 , 10 , 30 ] ) ) ;
10921094 }
10931095
0 commit comments