aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/installer/installation_manager.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/installer/installation_manager.rs')
-rw-r--r--crates/shirabe/src/installer/installation_manager.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/crates/shirabe/src/installer/installation_manager.rs b/crates/shirabe/src/installer/installation_manager.rs
index 17d284d..4a13e6b 100644
--- a/crates/shirabe/src/installer/installation_manager.rs
+++ b/crates/shirabe/src/installer/installation_manager.rs
@@ -79,9 +79,11 @@ impl InstallationManager {
///
/// @param InstallerInterface $installer installer instance
pub fn remove_installer(&mut self, installer: &dyn InstallerInterface) {
- // TODO(phase-b): array_search for trait object identity needs concrete type info
- let _ = installer;
- let key: Option<usize> = None;
+ let target = installer as *const dyn InstallerInterface as *const ();
+ let key = self
+ .installers
+ .iter()
+ .position(|inst| inst.as_ref() as *const dyn InstallerInterface as *const () == target);
if let Some(k) = key {
array_splice(&mut self.installers, k as i64, Some(1), vec![]);
self.cache = IndexMap::new();