From cc5d73c05a0abca2eebcc8a6afa0b1543ee49850 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 27 May 2026 00:49:33 +0900 Subject: refactor(package): pass package handles by value throughout Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/installer/suggested_packages_reporter.rs | 24 ++++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'crates/shirabe/src/installer/suggested_packages_reporter.rs') diff --git a/crates/shirabe/src/installer/suggested_packages_reporter.rs b/crates/shirabe/src/installer/suggested_packages_reporter.rs index 8faae9c..087e1b5 100644 --- a/crates/shirabe/src/installer/suggested_packages_reporter.rs +++ b/crates/shirabe/src/installer/suggested_packages_reporter.rs @@ -2,7 +2,7 @@ use crate::io::IOInterface; use crate::io::IOInterfaceImmutable; -use crate::package::PackageInterface; +use crate::package::PackageInterfaceHandle; use crate::repository::InstalledRepository; use crate::repository::RepositoryInterface; use indexmap::IndexMap; @@ -41,8 +41,8 @@ impl SuggestedPackagesReporter { self } - pub fn add_suggestions_from_package(&mut self, package: &dyn PackageInterface) -> &mut Self { - let source = package.get_pretty_name().to_string(); + pub fn add_suggestions_from_package(&mut self, package: PackageInterfaceHandle) -> &mut Self { + let source = package.get_pretty_name(); for (target, reason) in package.get_suggests() { self.add_package(source.clone(), target.clone(), reason.clone()); } @@ -54,9 +54,10 @@ impl SuggestedPackagesReporter { &self, mode: i64, installed_repo: Option<&InstalledRepository>, - only_dependents_of: Option<&dyn PackageInterface>, + only_dependents_of: Option, ) { - let suggested_packages = self.get_filtered_suggestions(installed_repo, only_dependents_of); + let suggested_packages = + self.get_filtered_suggestions(installed_repo, only_dependents_of.clone()); let mut suggesters: IndexMap> = IndexMap::new(); let mut suggested: IndexMap> = IndexMap::new(); @@ -142,7 +143,7 @@ impl SuggestedPackagesReporter { pub fn output_minimalistic( &self, installed_repo: Option<&InstalledRepository>, - only_dependents_of: Option<&dyn PackageInterface>, + only_dependents_of: Option, ) { let suggested_packages = self.get_filtered_suggestions(installed_repo, only_dependents_of); if !suggested_packages.is_empty() { @@ -156,7 +157,7 @@ impl SuggestedPackagesReporter { fn get_filtered_suggestions( &self, installed_repo: Option<&InstalledRepository>, - only_dependents_of: Option<&dyn PackageInterface>, + only_dependents_of: Option, ) -> Vec> { let suggested_packages = self.get_packages(); let mut installed_names: Vec = Vec::new(); @@ -168,13 +169,14 @@ impl SuggestedPackagesReporter { let mut source_filter: Vec = Vec::new(); if let Some(only_dependents_of) = only_dependents_of { - source_filter = only_dependents_of - .get_requires() + let requires = only_dependents_of.get_requires(); + let dev_requires = only_dependents_of.get_dev_requires(); + source_filter = requires .values() - .chain(only_dependents_of.get_dev_requires().values()) + .chain(dev_requires.values()) .map(|link| link.get_target().to_string()) .collect(); - source_filter.push(only_dependents_of.get_name().to_string()); + source_filter.push(only_dependents_of.get_name()); } let mut suggestions: Vec> = Vec::new(); -- cgit v1.3.1