@@ -20,35 +20,35 @@ pub struct IterDescending;
2020/// respectively.
2121#[ derive( Debug ) ]
2222#[ must_use = "iterators are lazy and do nothing unless consumed" ]
23- pub struct TrieEdgeIter < ' a , N : ? Sized , V : ?Sized , D > {
23+ pub struct TrieEdgeIter < ' root , N , V : ?Sized , D > {
2424 leading_path : PathBuf ,
25- stack : Vec < Frame < ' a , N , V > > ,
25+ stack : Vec < Frame < ' root , N , V > > ,
2626 marker : std:: marker:: PhantomData < D > ,
2727}
2828
2929/// An iterator over the key-value pairs in a key-value trie.
3030#[ derive( Debug ) ]
3131#[ must_use = "iterators are lazy and do nothing unless consumed" ]
32- pub struct TrieValueIter < ' a , N : ? Sized , V : ?Sized , D > {
33- edges : TrieEdgeIter < ' a , N , V , D > ,
32+ pub struct TrieValueIter < ' root , N , V : ?Sized , D > {
33+ edges : TrieEdgeIter < ' root , N , V , D > ,
3434}
3535
3636#[ derive( Debug ) ]
37- struct Frame < ' a , N : ? Sized , V : ?Sized > {
38- node : & ' a N ,
39- hash : Option < & ' a HashType > ,
37+ struct Frame < ' root , N , V : ?Sized > {
38+ node : N ,
39+ hash : Option < & ' root HashType > ,
4040 leading_path_len : usize ,
4141 children : Option < std:: array:: IntoIter < PathComponent , { PathComponent :: LEN } > > ,
4242 marker : std:: marker:: PhantomData < V > ,
4343}
4444
45- impl < ' a , N , V , D > TrieEdgeIter < ' a , N , V , D >
45+ impl < ' root , N , V , D > TrieEdgeIter < ' root , N , V , D >
4646where
47- N : TrieNode < V > + ? Sized ,
48- V : AsRef < [ u8 ] > + ?Sized ,
47+ N : TrieNode < ' root , V > ,
48+ V : AsRef < [ u8 ] > + ?Sized + ' root ,
4949{
5050 /// Creates a new iterator over the given key-value trie.
51- pub fn new ( root : & ' a N , root_hash : Option < & ' a HashType > ) -> Self {
51+ pub fn new ( root : N , root_hash : Option < & ' root HashType > ) -> Self {
5252 let mut this = Self {
5353 leading_path : PathBuf :: new_const ( ) ,
5454 stack : Vec :: new ( ) ,
@@ -60,15 +60,15 @@ where
6060
6161 /// Transforms this iterator into an iterator over the key-value pairs in
6262 /// the trie.
63- pub const fn node_values ( self ) -> TrieValueIter < ' a , N , V , D > {
63+ pub const fn node_values ( self ) -> TrieValueIter < ' root , N , V , D > {
6464 TrieValueIter { edges : self }
6565 }
6666
6767 fn push_frame (
6868 & mut self ,
6969 leading_component : Option < PathComponent > ,
70- node : & ' a N ,
71- hash : Option < & ' a HashType > ,
70+ node : N ,
71+ hash : Option < & ' root HashType > ,
7272 ) {
7373 let frame = Frame {
7474 node,
@@ -115,12 +115,12 @@ macro_rules! descend {
115115 } ;
116116}
117117
118- impl < ' a , N , V > Iterator for TrieEdgeIter < ' a , N , V , IterAscending >
118+ impl < ' root , N , V > Iterator for TrieEdgeIter < ' root , N , V , IterAscending >
119119where
120- N : TrieNode < V > + ? Sized ,
121- V : AsRef < [ u8 ] > + ?Sized ,
120+ N : TrieNode < ' root , V > ,
121+ V : AsRef < [ u8 ] > + ?Sized + ' root ,
122122{
123- type Item = ( PathBuf , TrieEdgeState < ' a , N > ) ;
123+ type Item = ( PathBuf , TrieEdgeState < ' root , N > ) ;
124124
125125 fn next ( & mut self ) -> Option < Self :: Item > {
126126 while let Some ( & mut Frame {
@@ -157,12 +157,12 @@ where
157157 }
158158}
159159
160- impl < ' a , N , V > Iterator for TrieEdgeIter < ' a , N , V , IterDescending >
160+ impl < ' root , N , V > Iterator for TrieEdgeIter < ' root , N , V , IterDescending >
161161where
162- N : TrieNode < V > + ? Sized ,
163- V : AsRef < [ u8 ] > + ?Sized ,
162+ N : TrieNode < ' root , V > ,
163+ V : AsRef < [ u8 ] > + ?Sized + ' root ,
164164{
165- type Item = ( PathBuf , TrieEdgeState < ' a , N > ) ;
165+ type Item = ( PathBuf , TrieEdgeState < ' root , N > ) ;
166166
167167 fn next ( & mut self ) -> Option < Self :: Item > {
168168 while let Some ( & mut Frame {
@@ -192,25 +192,25 @@ where
192192 }
193193}
194194
195- impl < ' a , N , V > Iterator for TrieValueIter < ' a , N , V , IterAscending >
195+ impl < ' root , N , V > Iterator for TrieValueIter < ' root , N , V , IterAscending >
196196where
197- N : TrieNode < V > + ? Sized ,
198- V : AsRef < [ u8 ] > + ?Sized + ' a ,
197+ N : TrieNode < ' root , V > ,
198+ V : AsRef < [ u8 ] > + ?Sized + ' root ,
199199{
200- type Item = ( PathBuf , & ' a V ) ;
200+ type Item = ( PathBuf , & ' root V ) ;
201201
202202 fn next ( & mut self ) -> Option < Self :: Item > {
203203 self . edges
204204 . find_map ( |( path, node) | node. value ( ) . map ( |v| ( path, v) ) )
205205 }
206206}
207207
208- impl < ' a , N , V > Iterator for TrieValueIter < ' a , N , V , IterDescending >
208+ impl < ' root , N , V > Iterator for TrieValueIter < ' root , N , V , IterDescending >
209209where
210- N : TrieNode < V > + ? Sized ,
211- V : AsRef < [ u8 ] > + ?Sized + ' a ,
210+ N : TrieNode < ' root , V > ,
211+ V : AsRef < [ u8 ] > + ?Sized + ' root ,
212212{
213- type Item = ( PathBuf , & ' a V ) ;
213+ type Item = ( PathBuf , & ' root V ) ;
214214
215215 fn next ( & mut self ) -> Option < Self :: Item > {
216216 self . edges
@@ -220,7 +220,7 @@ where
220220
221221// auto-derived implementations would require N: Clone, V: Clone which is too much
222222
223- impl < N : ? Sized , V : ?Sized , D > Clone for TrieEdgeIter < ' _ , N , V , D > {
223+ impl < N : Copy , V : ?Sized , D > Clone for TrieEdgeIter < ' _ , N , V , D > {
224224 fn clone ( & self ) -> Self {
225225 Self {
226226 leading_path : self . leading_path . clone ( ) ,
@@ -235,7 +235,7 @@ impl<N: ?Sized, V: ?Sized, D> Clone for TrieEdgeIter<'_, N, V, D> {
235235 }
236236}
237237
238- impl < N : ? Sized , V : ?Sized , D > Clone for TrieValueIter < ' _ , N , V , D > {
238+ impl < N : Copy , V : ?Sized , D > Clone for TrieValueIter < ' _ , N , V , D > {
239239 fn clone ( & self ) -> Self {
240240 Self {
241241 edges : self . edges . clone ( ) ,
@@ -247,7 +247,7 @@ impl<N: ?Sized, V: ?Sized, D> Clone for TrieValueIter<'_, N, V, D> {
247247 }
248248}
249249
250- impl < N : ? Sized , V : ?Sized > Clone for Frame < ' _ , N , V > {
250+ impl < N : Copy , V : ?Sized > Clone for Frame < ' _ , N , V > {
251251 fn clone ( & self ) -> Self {
252252 Self {
253253 node : self . node ,
0 commit comments