Skip to main content

Crate fidius

Crate fidius 

Source
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_registry export function.

Structs§

PluginDescriptor
Metadata descriptor for a single plugin within a dylib.
PluginError
Error returned by plugin method implementations to signal business logic failures.
PluginRegistry
Top-level registry exported by every Fidius plugin dylib.

Enums§

BufferStrategyKind
Buffer management strategy for an interface.
WireFormat
Wire serialization format.

Constants§

ABI_VERSION
Current version of the PluginDescriptor struct layout. Bumped to 2 to add method_count field.
FIDIUS_MAGIC
Magic bytes identifying a Fidius plugin registry.
REGISTRY_VERSION
Current version of the PluginRegistry struct 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.