From 1dfd1ae32b9b27573b9ee4439674091b792bcce0 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 16 Aug 2026 20:20:15 +0900 Subject: refactor(preg): make preg_grep() return an iterator Callers had to build a temporary Vec<&str> at every call site to satisfy the &[&str] parameter. Taking IntoIterator and yielding the matched items lets them pass owned or borrowed strings directly. The flags variant and PREG_GREP_INVERT go away with it: no caller passes flags, and Composer's Preg::grep() has no such parameter either. --- crates/shirabe/src/repository/composer_repository.rs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'crates/shirabe/src/repository/composer_repository.rs') diff --git a/crates/shirabe/src/repository/composer_repository.rs b/crates/shirabe/src/repository/composer_repository.rs index 2faf33dc..ab8572ad 100644 --- a/crates/shirabe/src/repository/composer_repository.rs +++ b/crates/shirabe/src/repository/composer_repository.rs @@ -430,10 +430,7 @@ impl ComposerRepository { }; let filter_results = |results: Vec| -> anyhow::Result> { match &package_filter_regex { - Some(regex) => { - let results_refs: Vec<&str> = results.iter().map(|s| s.as_str()).collect(); - Ok(Preg::grep(regex, &results_refs)) - } + Some(regex) => Ok(Preg::grep(regex, results).collect()), None => Ok(results), } }; @@ -771,8 +768,7 @@ impl ComposerRepository { let regex = format!("{{(?:{})}}i", parts.join("|")); let vendor_names = self.get_vendor_names()?; - let vendor_names_refs: Vec<&str> = vendor_names.iter().map(|s| s.as_str()).collect(); - for name in Preg::grep(®ex, &vendor_names_refs) { + for name in Preg::grep(®ex, vendor_names) { let mut entry = IndexMap::new(); entry.insert("name".to_string(), PhpMixed::String(name)); entry.insert("description".to_string(), PhpMixed::String(String::new())); @@ -836,8 +832,7 @@ impl ComposerRepository { let regex = format!("{{(?:{})}}i", parts.join("|")); let package_names = self.get_package_names(None)?; - let package_names_refs: Vec<&str> = package_names.iter().map(|s| s.as_str()).collect(); - for name in Preg::grep(®ex, &package_names_refs) { + for name in Preg::grep(®ex, package_names) { let mut entry = IndexMap::new(); entry.insert("name".to_string(), PhpMixed::String(name)); entry.insert("description".to_string(), PhpMixed::String(String::new())); -- cgit v1.3.1-4-g156e