Trait plugger_types::Pluggable
[−]
[src]
pub trait Pluggable: PluggableFields + PluggableMethods { fn name(&self) -> &'static str; fn fields(&self) -> Vec<Field> { ... } fn methods(&self) -> Vec<Method> { ... } }
An object that can be plugged into a scripting language.
Can be automatically derived by placing #[pluggable] on a struct.
When implementing Pluggable, it is necessary to have both a struct and an
impl, with both having the #[pluggable] attribute.
This has been split up into two other traits
PluggableFields- `PluggableMethods
This is because the syntax extender can not see all of the code -
it can only see the thing it's operating on. This is why we need
an attribute on the struct and the impl. We can't implement
a trait twice, each time overriding a specific method.
Because of this, it is necessary to mark both the struct and the impl
with the pluggable attribute. It's not the prettiest, but it does work.