Struct perseus::Plugin [−][src]
pub struct Plugin<G: GenericNode, D: Any> {
pub name: String,
pub functional_actions_registrar: Box<dyn Fn(FunctionalPluginActions<G>) -> FunctionalPluginActions<G>>,
pub control_actions_registrar: Box<dyn Fn(ControlPluginActions) -> ControlPluginActions>,
pub env: PluginEnv,
// some fields omitted
}
Expand description
A Perseus plugin. This must be exported by all plugin crates so the user can register the plugin easily.
Fields
name: String
The machine name of the plugin, which will be used as a key in a HashMap with many other plugins. This should be the public crate name in all cases.
functional_actions_registrar: Box<dyn Fn(FunctionalPluginActions<G>) -> FunctionalPluginActions<G>>
A function that will be provided functional actions. It should then register runners from the plugin for every action that it takes.
control_actions_registrar: Box<dyn Fn(ControlPluginActions) -> ControlPluginActions>
A function that will be provided control actions. It should then register runners from the plugin for every action that it takes.
env: PluginEnv
The environment that the plugin should run in.
Implementations
pub fn new(
name: &str,
functional_actions_registrar: impl Fn(FunctionalPluginActions<G>) -> FunctionalPluginActions<G> + 'static,
control_actions_registrar: impl Fn(ControlPluginActions) -> ControlPluginActions + 'static,
env: PluginEnv
) -> Self
pub fn new(
name: &str,
functional_actions_registrar: impl Fn(FunctionalPluginActions<G>) -> FunctionalPluginActions<G> + 'static,
control_actions_registrar: impl Fn(ControlPluginActions) -> ControlPluginActions + 'static,
env: PluginEnv
) -> Self
Creates a new plugin with a name, functional actions, control actions, and whether or not the plugin is tinker-only.