diff options
Diffstat (limited to 'crates/shirabe/src/installer/installation_manager.rs')
| -rw-r--r-- | crates/shirabe/src/installer/installation_manager.rs | 8 |
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(); |
