@@ -151,47 +151,37 @@ impl<D> CheckPoint<D> {
151151 ///
152152 /// Returns `None` if checkpoint at `height` does not exist`.
153153 pub fn get ( & self , height : u32 ) -> Option < Self > {
154- // Quick path for current height
155- if self . height ( ) == height {
156- return Some ( self . clone ( ) ) ;
157- }
158-
159- // Use skip pointers for efficient traversal
160154 let mut current = self . clone ( ) ;
161155
162- // First, use skip pointers to get close
156+ if current. height ( ) == height {
157+ return Some ( current) ;
158+ }
159+
160+ // Use skip pointers to jump close to target
163161 while current. height ( ) > height {
164- // Try to use skip pointer if it won't overshoot
165- if let Some ( skip_cp) = current. skip ( ) {
166- if skip_cp. height ( ) >= height {
167- current = skip_cp;
168- continue ;
169- }
162+ match current. skip ( ) {
163+ Some ( skip_cp) => match skip_cp. height ( ) . cmp ( & height) {
164+ core:: cmp:: Ordering :: Greater => current = skip_cp,
165+ core:: cmp:: Ordering :: Equal => return Some ( skip_cp) ,
166+ core:: cmp:: Ordering :: Less => break , // Skip would undershoot
167+ } ,
168+ None => break , // No more skip pointers
170169 }
170+ }
171171
172- // Fall back to regular traversal
172+ // Linear search for exact height
173+ while current. height ( ) > height {
173174 match current. prev ( ) {
174- Some ( prev) => {
175- if prev. height ( ) < height {
176- // Height doesn't exist in the chain
177- return None ;
178- }
179- current = prev;
180- }
181- None => return None ,
182- }
183-
184- if current. height ( ) == height {
185- return Some ( current) ;
175+ Some ( prev_cp) => match prev_cp. height ( ) . cmp ( & height) {
176+ core:: cmp:: Ordering :: Greater => current = prev_cp,
177+ core:: cmp:: Ordering :: Equal => return Some ( prev_cp) ,
178+ core:: cmp:: Ordering :: Less => break , // Height doesn't exist
179+ } ,
180+ None => break , // End of chain
186181 }
187182 }
188183
189- // Check if we found the height after the loop
190- if current. height ( ) == height {
191- Some ( current)
192- } else {
193- None
194- }
184+ None
195185 }
196186
197187 /// Iterate checkpoints over a height range.
0 commit comments