From 886ee829cb191745167dca369045acd3125e5714 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 5 Jun 2026 02:36:13 +0900 Subject: feat(filter): share platform req filter via Rc, drop clone_box PlatformRequirementFilterInterface::clone_box (a todo!() trait-object clone stub) is removed in favor of Rc shared ownership, matching PHP's by-reference sharing of the single filter object. Box is replaced with Rc across the factory, Solver/RuleSetGenerator, VersionSelector, AutoloadGenerator, Installer and the command layer (BaseCommand/PackageDiscoveryTrait and their impls); clone_box call sites become Rc clones. Co-Authored-By: Claude Opus 4.8 (1M context) --- crates/shirabe/src/installer.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'crates/shirabe/src/installer.rs') diff --git a/crates/shirabe/src/installer.rs b/crates/shirabe/src/installer.rs index 1f63f35..95b9298 100644 --- a/crates/shirabe/src/installer.rs +++ b/crates/shirabe/src/installer.rs @@ -144,7 +144,7 @@ pub struct Installer { pub(crate) update_allow_list: Option>, pub(crate) update_allow_transitive_dependencies: i64, pub(crate) suggested_packages_reporter: SuggestedPackagesReporter, - pub(crate) platform_requirement_filter: Box, + pub(crate) platform_requirement_filter: std::rc::Rc, pub(crate) additional_fixed_repository: Option, pub(crate) temporary_constraints: IndexMap, } @@ -404,7 +404,7 @@ impl Installer { .set_run_scripts(self.run_scripts); self.autoload_generator .borrow_mut() - .set_platform_requirement_filter(self.platform_requirement_filter.clone_box()); + .set_platform_requirement_filter(self.platform_requirement_filter.clone()); let local_repo_handle = self.repository_manager.borrow().get_local_repository(); let local_repo_ref = local_repo_handle.borrow(); self.autoload_generator.borrow_mut().dump( @@ -662,7 +662,7 @@ impl Installer { match solver .as_mut() .unwrap() - .solve(&request, Some(self.platform_requirement_filter.clone_box())) + .solve(&request, Some(self.platform_requirement_filter.clone())) { Ok(t) => { lock_transaction = t; @@ -951,7 +951,7 @@ impl Installer { match solver .as_mut() .unwrap() - .solve(&request, Some(self.platform_requirement_filter.clone_box())) + .solve(&request, Some(self.platform_requirement_filter.clone())) { Ok(t) => { non_dev_lock_transaction = t; @@ -1093,7 +1093,7 @@ impl Installer { match solver .as_mut() .unwrap() - .solve(&request, Some(self.platform_requirement_filter.clone_box())) + .solve(&request, Some(self.platform_requirement_filter.clone())) { Ok(lock_transaction) => { solver = None; @@ -1866,7 +1866,7 @@ impl Installer { pub fn set_platform_requirement_filter( &mut self, - platform_requirement_filter: Box, + platform_requirement_filter: std::rc::Rc, ) -> &mut Self { self.platform_requirement_filter = platform_requirement_filter; -- cgit v1.3.1