Expand description
Fidius — a Rust plugin framework for trait-to-dylib plugin systems.
This is the facade crate. Interface crates should depend on fidius only.
It re-exports everything needed to define interfaces and implement plugins.
§For interface crate authors
ⓘ
pub use fidius::{plugin_impl, PluginError};
#[fidius::plugin_interface(version = 1, buffer = PluginAllocated)]
pub trait MyPlugin: Send + Sync {
fn process(&self, input: String) -> String;
}§For plugin crate authors
ⓘ
use my_interface::{plugin_impl, MyPlugin, PluginError};
pub struct MyImpl;
#[plugin_impl(MyPlugin)]
impl MyPlugin for MyImpl {
fn process(&self, input: String) -> String {
format!("processed: {input}")
}
}
fidius::fidius_plugin_registry!();Re-exports§
pub use fidius_core::inventory;
Modules§
- descriptor
- FFI descriptor and registry types for the Fidius plugin framework.
- error
- Error types for the Fidius plugin framework.
- hash
- FNV-1a interface hashing for compile-time ABI drift detection.
- registry
- Plugin registry assembly for multi-plugin dylibs.
- status
- FFI status codes returned by plugin method shims.
- wire
- Wire format serialization for Fidius plugin FFI boundary.
Macros§
- fidius_
plugin_ registry - Emit the
fidius_get_registryexport function.
Structs§
- Plugin
Descriptor - Metadata descriptor for a single plugin within a dylib.
- Plugin
Error - Error returned by plugin method implementations to signal business logic failures.
- Plugin
Registry - Top-level registry exported by every Fidius plugin dylib.
Enums§
- Buffer
Strategy Kind - Buffer management strategy for an interface.
- Wire
Format - Wire serialization format.
Constants§
- ABI_
VERSION - Current version of the
PluginDescriptorstruct layout. Bumped to 2 to addmethod_countfield. - FIDIUS_
MAGIC - Magic bytes identifying a Fidius plugin registry.
- REGISTRY_
VERSION - Current version of the
PluginRegistrystruct layout.
Functions§
- fnv1a
- Compute the FNV-1a 64-bit hash of a byte slice.
- interface_
hash - Compute the interface hash from a set of method signatures.
Attribute Macros§
- plugin_
impl - Implement a plugin interface for a concrete type.
- plugin_
interface - Define a plugin interface from a trait.