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/repository/vcs_repository.rs | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) (limited to 'crates/shirabe/src/repository/vcs_repository.rs') diff --git a/crates/shirabe/src/repository/vcs_repository.rs b/crates/shirabe/src/repository/vcs_repository.rs index 1ae7e40..a256fb8 100644 --- a/crates/shirabe/src/repository/vcs_repository.rs +++ b/crates/shirabe/src/repository/vcs_repository.rs @@ -15,7 +15,6 @@ use crate::config::Config; use crate::downloader::TransportException; use crate::event_dispatcher::EventDispatcher; use crate::io::IOInterface; -use crate::package::BasePackage; use crate::package::loader::ArrayLoader; use crate::package::loader::InvalidPackageException; use crate::package::loader::LoaderInterface; @@ -387,9 +386,7 @@ impl VcsRepository { )?; match cached_package { CachedPackageResult::Package(pkg) => { - // TODO(phase-b): trait upcast Box -> Box - let pkg_pi: Box = pkg.clone_package_box(); - self.inner.add_package(pkg_pi)?; + self.inner.add_package(pkg)?; continue; } CachedPackageResult::Missing => { @@ -541,10 +538,7 @@ impl VcsRepository { let driver = self.driver.as_ref().unwrap(); let processed = self.pre_process(&**driver, data, &identifier)?; let loaded = self.loader.as_ref().unwrap().load(processed, None)?; - // TODO(phase-b): trait upcast Box -> Box - let loaded_pi: Box = - loaded.clone_package_box(); - self.inner.add_package(loaded_pi)?; + self.inner.add_package(loaded)?; Ok(()) })(); if let Err(e) = result { @@ -662,9 +656,7 @@ impl VcsRepository { )?; match cached_package { CachedPackageResult::Package(pkg) => { - // TODO(phase-b): trait upcast Box -> Box - let pkg_pi: Box = pkg.clone_package_box(); - self.inner.add_package(pkg_pi)?; + self.inner.add_package(pkg)?; continue; } CachedPackageResult::Missing => { @@ -727,10 +719,7 @@ impl VcsRepository { ); } } - // TODO(phase-b): trait upcast Box -> Box - let package_pi: Box = - package.clone_package_box(); - self.inner.add_package(package_pi)?; + self.inner.add_package(package)?; Ok(()) })(); if let Err(e) = result { @@ -995,5 +984,5 @@ impl VcsRepository { enum CachedPackageResult { None, Missing, - Package(Box), + Package(crate::package::PackageInterfaceHandle), } -- cgit v1.3.1