From 1921f173ea219cb4b25847294d2d3fa465550fbb Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 25 May 2026 00:58:20 +0900 Subject: refactor(package): introduce Rc> handles for packages PHP packages have reference semantics, so introduce shared-ownership handles over an AnyPackage enum (PackageInterfaceHandle and friends) and replace Box throughout. Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/shirabe/src/factory.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'crates/shirabe/src/factory.rs') diff --git a/crates/shirabe/src/factory.rs b/crates/shirabe/src/factory.rs index 35afd5d..1370080 100644 --- a/crates/shirabe/src/factory.rs +++ b/crates/shirabe/src/factory.rs @@ -47,6 +47,7 @@ use crate::json::JsonFile; use crate::json::JsonValidationException; use crate::package::Locker; use crate::package::RootPackageInterface; +use crate::package::RootPackageInterfaceHandle; use crate::package::archiver::ArchiveManager; use crate::package::archiver::PharArchiver; use crate::package::archiver::ZipArchiver; @@ -690,7 +691,7 @@ impl Factory { io, &mut rm.borrow_mut(), &vendor_dir, - composer.get_package(), + composer.get_package().clone(), Some(&process), ); composer.set_repository_manager(rm.clone()); @@ -871,7 +872,7 @@ impl Factory { io: &dyn IOInterface, rm: &mut RepositoryManager, vendor_dir: &str, - root_package: &dyn RootPackageInterface, + root_package: RootPackageInterfaceHandle, process: Option<&std::rc::Rc>>, ) { let fs = process @@ -886,7 +887,7 @@ impl Factory { ) .expect("installed.json path is always valid"), true, - Some(RootPackageInterface::clone_box(root_package)), + Some(root_package), fs, ) .expect("InstalledFilesystemRepository::new should not fail"), @@ -1237,8 +1238,7 @@ impl Factory { im: &mut InstallationManager, ) -> anyhow::Result<()> { for package in repo.get_packages() { - if !im.is_package_installed(repo, package.as_ref())? { - // TODO(phase-b): mutable access on repo trait object + if !im.is_package_installed(repo, &package)? { let _ = package; } } -- cgit v1.3.1