diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-25 00:58:20 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-25 00:58:36 +0900 |
| commit | 1921f173ea219cb4b25847294d2d3fa465550fbb (patch) | |
| tree | 0d30486a2cb9a0c106e5d5827be3f655c60cd871 /crates/shirabe/src/repository/vcs_repository.rs | |
| parent | dbdecaf5a1c54a876b7ee0153d58dd39b1080f97 (diff) | |
| download | php-shirabe-1921f173ea219cb4b25847294d2d3fa465550fbb.tar.gz php-shirabe-1921f173ea219cb4b25847294d2d3fa465550fbb.tar.zst php-shirabe-1921f173ea219cb4b25847294d2d3fa465550fbb.zip | |
refactor(package): introduce Rc<RefCell<_>> handles for packages
PHP packages have reference semantics, so introduce shared-ownership
handles over an AnyPackage enum (PackageInterfaceHandle and friends)
and replace Box<dyn PackageInterface> throughout.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/repository/vcs_repository.rs')
| -rw-r--r-- | crates/shirabe/src/repository/vcs_repository.rs | 21 |
1 files changed, 5 insertions, 16 deletions
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<dyn BasePackage> -> Box<dyn PackageInterface> - let pkg_pi: Box<dyn crate::package::PackageInterface> = 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<dyn BasePackage> -> Box<dyn PackageInterface> - let loaded_pi: Box<dyn crate::package::PackageInterface> = - 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<dyn BasePackage> -> Box<dyn PackageInterface> - let pkg_pi: Box<dyn crate::package::PackageInterface> = 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<dyn BasePackage> -> Box<dyn PackageInterface> - let package_pi: Box<dyn crate::package::PackageInterface> = - 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<dyn BasePackage>), + Package(crate::package::PackageInterfaceHandle), } |
