diff options
Diffstat (limited to 'crates/shirabe/src/plugin')
| -rw-r--r-- | crates/shirabe/src/plugin/plugin_interface.rs | 4 | ||||
| -rw-r--r-- | crates/shirabe/src/plugin/plugin_manager.rs | 9 |
2 files changed, 6 insertions, 7 deletions
diff --git a/crates/shirabe/src/plugin/plugin_interface.rs b/crates/shirabe/src/plugin/plugin_interface.rs index d335bf0..486dbea 100644 --- a/crates/shirabe/src/plugin/plugin_interface.rs +++ b/crates/shirabe/src/plugin/plugin_interface.rs @@ -15,10 +15,6 @@ pub trait PluginInterface: std::fmt::Debug { fn uninstall(&mut self, composer: &ComposerHandle, io: Rc<RefCell<dyn IOInterface>>); - fn clone_box(&self) -> Box<dyn PluginInterface> { - todo!() - } - // TODO(plugin): PHP-side `instanceof` checks for EventSubscriberInterface / Capable. // EventSubscriberInterface is not dyn-compatible (its only method is associated, not // a `&self` method), so we expose a boolean predicate instead. diff --git a/crates/shirabe/src/plugin/plugin_manager.rs b/crates/shirabe/src/plugin/plugin_manager.rs index e8377f3..da64cee 100644 --- a/crates/shirabe/src/plugin/plugin_manager.rs +++ b/crates/shirabe/src/plugin/plugin_manager.rs @@ -182,8 +182,11 @@ impl PluginManager { } /// Gets all currently active plugin instances - pub fn get_plugins(&self) -> Vec<Box<dyn PluginInterface>> { - self.plugins.iter().map(|p| p.clone_box()).collect() + /// + /// PHP returns `$this->plugins` directly; the plugin objects are shared by reference, so this + /// borrows the stored instances rather than cloning them. + pub fn get_plugins(&self) -> &[Box<dyn PluginInterface>] { + &self.plugins } /// Gets all currently active plugin instances @@ -723,7 +726,7 @@ impl PluginManager { ) -> Vec<Box<dyn Capability>> { // TODO(plugin): aggregate capabilities across all loaded plugins let mut capabilities: Vec<Box<dyn Capability>> = vec![]; - for plugin in &self.get_plugins() { + for plugin in self.get_plugins() { if let Ok(Some(capability)) = self.get_plugin_capability(&**plugin, capability_class_name, ctor_args.clone()) { |
