File tree Expand file tree Collapse file tree 2 files changed +10
-8
lines changed Expand file tree Collapse file tree 2 files changed +10
-8
lines changed Original file line number Diff line number Diff line change @@ -108,7 +108,9 @@ pub trait ArrayOrVecHelper: BorrowMut<[usize]> {
108
108
where
109
109
I :: Item : Clone ;
110
110
111
- fn from_fn < T , F : Fn ( usize ) -> T > ( k : Self :: Length , f : F ) -> Self :: Item < T > ;
111
+ // TODO if only ever used to index into LazyBuffer, specialize to
112
+ // extract_from_fn(Self::Length, Fn(usize) -> usize, &LazyBuffer) -> Item<T>?
113
+ fn item_from_fn < T , F : Fn ( usize ) -> T > ( len : Self :: Length , f : F ) -> Self :: Item < T > ;
112
114
113
115
fn len ( & self ) -> Self :: Length ;
114
116
}
@@ -124,8 +126,8 @@ impl ArrayOrVecHelper for Vec<usize> {
124
126
pool. get_at ( self )
125
127
}
126
128
127
- fn from_fn < T , F : Fn ( usize ) -> T > ( k : Self :: Length , f : F ) -> Self :: Item < T > {
128
- ( 0 ..k ) . map ( f) . collect ( )
129
+ fn item_from_fn < T , F : Fn ( usize ) -> T > ( len : Self :: Length , f : F ) -> Self :: Item < T > {
130
+ ( 0 ..len ) . map ( f) . collect ( )
129
131
}
130
132
131
133
fn len ( & self ) -> Self :: Length {
@@ -144,7 +146,7 @@ impl<const K: usize> ArrayOrVecHelper for [usize; K] {
144
146
pool. get_array ( * self )
145
147
}
146
148
147
- fn from_fn < T , F : Fn ( usize ) -> T > ( _k : Self :: Length , f : F ) -> Self :: Item < T > {
149
+ fn item_from_fn < T , F : Fn ( usize ) -> T > ( _len : Self :: Length , f : F ) -> Self :: Item < T > {
148
150
std:: array:: from_fn ( f)
149
151
}
150
152
Original file line number Diff line number Diff line change @@ -84,12 +84,12 @@ where
84
84
min_n : k. value ( ) ,
85
85
} ;
86
86
}
87
- Some ( Idx :: from_fn ( k, |i| vals[ i] . clone ( ) ) )
87
+ Some ( Idx :: item_from_fn ( k, |i| vals[ i] . clone ( ) ) )
88
88
}
89
89
PermutationState :: Buffered { k, min_n } => {
90
90
if vals. get_next ( ) {
91
91
// TODO This is ugly. Maybe working on indices is better?
92
- let item = Idx :: from_fn ( * k, |i| {
92
+ let item = Idx :: item_from_fn ( * k, |i| {
93
93
vals[ if i == k. value ( ) - 1 { * min_n } else { i } ] . clone ( )
94
94
} ) ;
95
95
* min_n += 1 ;
@@ -106,7 +106,7 @@ where
106
106
return None ;
107
107
}
108
108
}
109
- let item = Idx :: from_fn ( * k, |i| vals[ indices[ i] ] . clone ( ) ) ;
109
+ let item = Idx :: item_from_fn ( * k, |i| vals[ indices[ i] ] . clone ( ) ) ;
110
110
* state = PermutationState :: Loaded {
111
111
indices,
112
112
cycles,
@@ -120,7 +120,7 @@ where
120
120
* state = PermutationState :: End ;
121
121
return None ;
122
122
}
123
- Some ( Idx :: from_fn ( * k, |i| vals[ indices[ i] ] . clone ( ) ) )
123
+ Some ( Idx :: item_from_fn ( * k, |i| vals[ indices[ i] ] . clone ( ) ) )
124
124
}
125
125
PermutationState :: End => None ,
126
126
}
You can’t perform that action at this time.
0 commit comments