aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository/repository_manager.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-25 00:58:20 +0900
committernsfisis <nsfisis@gmail.com>2026-05-25 00:58:36 +0900
commit1921f173ea219cb4b25847294d2d3fa465550fbb (patch)
tree0d30486a2cb9a0c106e5d5827be3f655c60cd871 /crates/shirabe/src/repository/repository_manager.rs
parentdbdecaf5a1c54a876b7ee0153d58dd39b1080f97 (diff)
downloadphp-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/repository_manager.rs')
-rw-r--r--crates/shirabe/src/repository/repository_manager.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/crates/shirabe/src/repository/repository_manager.rs b/crates/shirabe/src/repository/repository_manager.rs
index e85312a..f432d6e 100644
--- a/crates/shirabe/src/repository/repository_manager.rs
+++ b/crates/shirabe/src/repository/repository_manager.rs
@@ -7,7 +7,7 @@ use shirabe_semver::constraint::AnyConstraint;
use crate::config::Config;
use crate::event_dispatcher::EventDispatcher;
use crate::io::IOInterface;
-use crate::package::PackageInterface;
+use crate::package::PackageInterfaceHandle;
use crate::repository::FilterRepository;
use crate::repository::InstalledRepositoryInterface;
use crate::repository::RepositoryInterface;
@@ -52,13 +52,13 @@ impl RepositoryManager {
&self,
name: &str,
constraint: &AnyConstraint,
- ) -> Option<Box<dyn PackageInterface>> {
+ ) -> Option<PackageInterfaceHandle> {
for repository in &self.repositories {
if let Some(package) = repository.find_package(
name,
crate::repository::FindPackageConstraint::Constraint(constraint.clone()),
) {
- return Some(package.clone_package_box());
+ return Some(package.clone().into());
}
}
None
@@ -68,8 +68,8 @@ impl RepositoryManager {
&self,
name: &str,
constraint: &AnyConstraint,
- ) -> Vec<Box<dyn PackageInterface>> {
- let mut packages: Vec<Box<dyn PackageInterface>> = vec![];
+ ) -> Vec<PackageInterfaceHandle> {
+ let mut packages: Vec<PackageInterfaceHandle> = vec![];
for repository in self.get_repositories() {
for p in repository.find_packages(
name,
@@ -77,7 +77,7 @@ impl RepositoryManager {
constraint.clone(),
)),
) {
- packages.push(p.clone_package_box());
+ packages.push(p.clone().into());
}
}
packages