diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-29 03:42:14 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-29 03:42:14 +0900 |
| commit | 86fcc80b348a3f00ab81e5447924aa10202d95e8 (patch) | |
| tree | 0bdb4f7bd11aab799230a97500a380401a93b77e /crates/shirabe/src/dependency_resolver/request.rs | |
| parent | 7f83e785a77fbdbcada9c6714703d4e5801af82a (diff) | |
| download | php-shirabe-86fcc80b348a3f00ab81e5447924aa10202d95e8.tar.gz php-shirabe-86fcc80b348a3f00ab81e5447924aa10202d95e8.tar.zst php-shirabe-86fcc80b348a3f00ab81e5447924aa10202d95e8.zip | |
refactor(repository): introduce typed LockArrayRepositoryHandle
Share LockArrayRepository via Rc<RefCell<_>> while preserving the PHP
?LockArrayRepository type strength: Request.locked_repository, Locker
::get_locked_repository, and the installer create_* helpers now thread
the typed handle instead of an owned LockArrayRepository, and pool
builder identity check becomes a strict ptr_eq via widening into
RepositoryInterfaceHandle.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/request.rs')
| -rw-r--r-- | crates/shirabe/src/dependency_resolver/request.rs | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/crates/shirabe/src/dependency_resolver/request.rs b/crates/shirabe/src/dependency_resolver/request.rs index 0621775..df26535 100644 --- a/crates/shirabe/src/dependency_resolver/request.rs +++ b/crates/shirabe/src/dependency_resolver/request.rs @@ -6,8 +6,7 @@ use shirabe_semver::constraint::AnyConstraint; use shirabe_semver::constraint::MatchAllConstraint; use crate::package::BasePackageHandle; -use crate::repository::CanonicalPackagesTrait; -use crate::repository::LockArrayRepository; +use crate::repository::LockArrayRepositoryHandle; use crate::repository::RepositoryInterface; /// Identifies a partial update for listed packages only, all dependencies will remain at locked versions @@ -41,7 +40,7 @@ pub enum UpdateAllowTransitiveDeps { #[derive(Debug)] pub struct Request { - pub(crate) locked_repository: Option<LockArrayRepository>, + pub(crate) locked_repository: Option<LockArrayRepositoryHandle>, pub(crate) requires: IndexMap<String, AnyConstraint>, pub(crate) fixed_packages: IndexMap<String, BasePackageHandle>, pub(crate) locked_packages: IndexMap<String, BasePackageHandle>, @@ -52,7 +51,7 @@ pub struct Request { } impl Request { - pub fn new(locked_repository: Option<LockArrayRepository>) -> Self { + pub fn new(locked_repository: Option<LockArrayRepositoryHandle>) -> Self { Self { locked_repository, requires: IndexMap::new(), @@ -200,7 +199,7 @@ impl Request { let mut present_map: IndexMap<String, crate::package::BasePackageHandle> = IndexMap::new(); if let Some(ref locked_repository) = self.locked_repository { - for package in RepositoryInterface::get_packages(locked_repository) { + for package in RepositoryInterface::get_packages(&*locked_repository.borrow()) { let key = if package_ids { package.get_id().to_string() } else { @@ -230,8 +229,8 @@ impl Request { fixed_packages_map } - pub fn get_locked_repository(&self) -> Option<&LockArrayRepository> { - self.locked_repository.as_ref() + pub fn get_locked_repository(&self) -> Option<LockArrayRepositoryHandle> { + self.locked_repository.clone() } /// Restricts the pool builder from loading other packages than those listed here. |
