aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/handle.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-28 22:43:11 +0900
committernsfisis <nsfisis@gmail.com>2026-05-28 22:43:43 +0900
commiteea4efe87e455742ec17881ee93d8095925e8516 (patch)
tree6d242f4fdd0bf32f0494a6fbbd62bce9ed6e1dc7 /crates/shirabe/src/package/handle.rs
parentcc5d73c05a0abca2eebcc8a6afa0b1543ee49850 (diff)
downloadphp-shirabe-eea4efe87e455742ec17881ee93d8095925e8516.tar.gz
php-shirabe-eea4efe87e455742ec17881ee93d8095925e8516.tar.zst
php-shirabe-eea4efe87e455742ec17881ee93d8095925e8516.zip
refactor(repository): introduce Rc<RefCell<_>> handles for repositories
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/package/handle.rs')
-rw-r--r--crates/shirabe/src/package/handle.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/crates/shirabe/src/package/handle.rs b/crates/shirabe/src/package/handle.rs
index 931e196..e939c3a 100644
--- a/crates/shirabe/src/package/handle.rs
+++ b/crates/shirabe/src/package/handle.rs
@@ -273,11 +273,11 @@ macro_rules! delegate_package_interface_to_inner {
}
fn set_repository(
&mut self,
- repository: Box<dyn crate::repository::RepositoryInterface>,
+ repository: crate::repository::RepositoryInterfaceHandle,
) -> anyhow::Result<()> {
self.$field.set_repository(repository)
}
- fn get_repository(&self) -> Option<&dyn crate::repository::RepositoryInterface> {
+ fn get_repository(&self) -> Option<crate::repository::RepositoryInterfaceHandle> {
self.$field.get_repository()
}
fn get_binaries(&self) -> Vec<String> {
@@ -588,7 +588,7 @@ macro_rules! impl_package_interface_handle {
pub fn set_repository(
&self,
- repository: Box<dyn crate::repository::RepositoryInterface>,
+ repository: crate::repository::RepositoryInterfaceHandle,
) -> anyhow::Result<()> {
self.0
.borrow_mut()
@@ -596,6 +596,10 @@ macro_rules! impl_package_interface_handle {
.set_repository(repository)
}
+ pub fn get_repository(&self) -> Option<crate::repository::RepositoryInterfaceHandle> {
+ self.0.borrow().as_package_interface().get_repository()
+ }
+
pub fn get_binaries(&self) -> Vec<String> {
self.0.borrow().as_package_interface().get_binaries()
}