From 6a0cca7178b303e7d50237d31818bc933ca7cda4 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 25 Feb 2022 10:58:45 +0100 Subject: [PATCH] Add a fast path for when the search query is empty --- crates/project/src/search.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/crates/project/src/search.rs b/crates/project/src/search.rs index 688374b8bb1d6c1b3b3e6aea1072466a7e8301f8..dd2699238dcfc4866f8be3bb2d60494e84776bdc 100644 --- a/crates/project/src/search.rs +++ b/crates/project/src/search.rs @@ -55,6 +55,10 @@ impl SearchQuery { } pub fn detect(&self, stream: T) -> Result { + if self.as_str().is_empty() { + return Ok(false); + } + match self { SearchQuery::Text { search, .. } => { let mat = search.stream_find_iter(stream).next(); @@ -89,6 +93,10 @@ impl SearchQuery { pub async fn search(&self, rope: &Rope) -> Vec> { const YIELD_INTERVAL: usize = 20000; + if self.as_str().is_empty() { + return Default::default(); + } + let mut matches = Vec::new(); match self { SearchQuery::Text { @@ -152,4 +160,11 @@ impl SearchQuery { } matches } + + fn as_str(&self) -> &str { + match self { + SearchQuery::Text { query, .. } => query.as_str(), + SearchQuery::Regex { regex, .. } => regex.as_str(), + } + } }