aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/composer.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/composer.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/composer.rs')
-rw-r--r--crates/shirabe/src/composer.rs18
1 files changed, 9 insertions, 9 deletions
diff --git a/crates/shirabe/src/composer.rs b/crates/shirabe/src/composer.rs
index 2da4639..fe700cf 100644
--- a/crates/shirabe/src/composer.rs
+++ b/crates/shirabe/src/composer.rs
@@ -9,7 +9,7 @@ use crate::downloader::DownloadManager;
use crate::event_dispatcher::EventDispatcher;
use crate::installer::InstallationManager;
use crate::package::archiver::ArchiveManager;
-use crate::package::{Locker, RootPackageInterface};
+use crate::package::{Locker, RootPackageInterfaceHandle};
use crate::plugin::PluginManager;
use crate::repository::RepositoryManager;
use crate::util::r#loop::Loop;
@@ -35,7 +35,7 @@ pub fn get_version() -> String {
#[derive(Debug, Default)]
pub struct PartialComposer {
global: bool,
- package: Option<Box<dyn RootPackageInterface>>,
+ package: Option<RootPackageInterfaceHandle>,
r#loop: Option<std::rc::Rc<std::cell::RefCell<Loop>>>,
repository_manager: Option<std::rc::Rc<std::cell::RefCell<RepositoryManager>>>,
installation_manager: Option<std::rc::Rc<std::cell::RefCell<InstallationManager>>>,
@@ -44,12 +44,12 @@ pub struct PartialComposer {
}
impl PartialComposer {
- pub fn set_package(&mut self, package: Box<dyn RootPackageInterface>) {
+ pub fn set_package(&mut self, package: RootPackageInterfaceHandle) {
self.package = Some(package);
}
- pub fn get_package(&self) -> &dyn RootPackageInterface {
- self.package.as_deref().unwrap()
+ pub fn get_package(&self) -> &RootPackageInterfaceHandle {
+ self.package.as_ref().unwrap()
}
pub fn set_config(&mut self, config: std::rc::Rc<std::cell::RefCell<Config>>) {
@@ -193,11 +193,11 @@ impl Composer {
&mut self.partial
}
- pub fn set_package(&mut self, package: Box<dyn crate::package::RootPackageInterface>) {
+ pub fn set_package(&mut self, package: RootPackageInterfaceHandle) {
self.partial.set_package(package);
}
- pub fn get_package(&self) -> &dyn crate::package::RootPackageInterface {
+ pub fn get_package(&self) -> &RootPackageInterfaceHandle {
self.partial.get_package()
}
@@ -316,14 +316,14 @@ impl PartialOrFullComposer {
}
}
- pub fn set_package(&mut self, package: Box<dyn crate::package::RootPackageInterface>) {
+ pub fn set_package(&mut self, package: RootPackageInterfaceHandle) {
match self {
Self::Full(full) => full.set_package(package),
Self::Partial(partial) => partial.set_package(package),
}
}
- pub fn get_package(&self) -> &dyn crate::package::RootPackageInterface {
+ pub fn get_package(&self) -> &RootPackageInterfaceHandle {
match self {
Self::Full(full) => full.get_package(),
Self::Partial(partial) => partial.get_package(),