aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-08-16 20:20:15 +0900
committernsfisis <nsfisis@gmail.com>2026-08-16 20:20:15 +0900
commit1dfd1ae32b9b27573b9ee4439674091b792bcce0 (patch)
treed715462a35a4b5e59f828e2c18865a1b322e9abc /crates/shirabe/src/repository
parentb6604e1395f003748fe40a44e1190470632a40ce (diff)
downloadphp-shirabe-1dfd1ae32b9b27573b9ee4439674091b792bcce0.tar.gz
php-shirabe-1dfd1ae32b9b27573b9ee4439674091b792bcce0.tar.zst
php-shirabe-1dfd1ae32b9b27573b9ee4439674091b792bcce0.zip
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.
Diffstat (limited to 'crates/shirabe/src/repository')
-rw-r--r--crates/shirabe/src/repository/composer_repository.rs11
1 files changed, 3 insertions, 8 deletions
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<String>| -> anyhow::Result<Vec<String>> {
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(&regex, &vendor_names_refs) {
+ for name in Preg::grep(&regex, 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(&regex, &package_names_refs) {
+ for name in Preg::grep(&regex, package_names) {
let mut entry = IndexMap::new();
entry.insert("name".to_string(), PhpMixed::String(name));
entry.insert("description".to_string(), PhpMixed::String(String::new()));