From 3cf7cb52655bf9dc2ed1d35523f28a5bb4fb82d5 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 24 Feb 2026 15:32:28 +0100 Subject: [PATCH] multi_buffer: Improve lookup performance for `MultiBufferSnapshot::excerpt` (#49986) Co-authored by: John Tur Release Notes: - N/A *or* Added/Fixed/Improved ... --- crates/multi_buffer/src/multi_buffer.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/multi_buffer/src/multi_buffer.rs b/crates/multi_buffer/src/multi_buffer.rs index 22142c2e28bfcb56077e936d664b7c810862feaa..34d32f481947657327cbec99e0a3aedc59aeabe7 100644 --- a/crates/multi_buffer/src/multi_buffer.rs +++ b/crates/multi_buffer/src/multi_buffer.rs @@ -7034,16 +7034,16 @@ impl MultiBufferSnapshot { /// afterwards. fn excerpt(&self, excerpt_id: ExcerptId) -> Option<&Excerpt> { let excerpt_id = self.latest_excerpt_id(excerpt_id); - let mut cursor = self.excerpts.cursor::>(()); let locator = self.excerpt_locator_for_id(excerpt_id); - cursor.seek(&Some(locator), Bias::Left); - if let Some(excerpt) = cursor.item() + let (_, _, item) = + self.excerpts + .find::, _>((), &Some(locator), Bias::Left); + if let Some(excerpt) = item && excerpt.id == excerpt_id { return Some(excerpt); - } else if cursor.item().is_none() && excerpt_id == ExcerptId::max() { - cursor.prev(); - return cursor.item(); + } else if item.is_none() && excerpt_id == ExcerptId::max() { + return self.excerpts.last(); } None }