pub struct WatchingPluginManager { /* private fields */ }Expand description
Plugin manager with hot-reloading support.
This manager tracks plugin file modification times and can reload plugins when their source files change. This is useful for development workflows where you want to iterate on plugins without restarting.
§Example
ⓘ
use rustledger_plugin::WatchingPluginManager;
let mut manager = WatchingPluginManager::new();
manager.load("plugins/my_plugin.wasm")?;
// Check for changes and reload if needed
if manager.check_and_reload()? {
println!("Plugins reloaded!");
}Implementations§
Source§impl WatchingPluginManager
impl WatchingPluginManager
Sourcepub fn with_config(config: RuntimeConfig) -> Self
pub fn with_config(config: RuntimeConfig) -> Self
Create a watching plugin manager with custom configuration.
Sourcepub fn on_reload<F>(&mut self, callback: F)
pub fn on_reload<F>(&mut self, callback: F)
Set a callback to be invoked when a plugin is reloaded.
Sourcepub fn load(&mut self, path: impl AsRef<Path>) -> Result<usize>
pub fn load(&mut self, path: impl AsRef<Path>) -> Result<usize>
Load a plugin from a file path.
Sourcepub fn check_and_reload(&mut self) -> Result<bool>
pub fn check_and_reload(&mut self) -> Result<bool>
Check for file changes and reload modified plugins.
Returns true if any plugins were reloaded.
Sourcepub fn reload_all(&mut self) -> Result<()>
pub fn reload_all(&mut self) -> Result<()>
Force reload all plugins.
Sourcepub fn execute(&self, index: usize, input: &PluginInput) -> Result<PluginOutput>
pub fn execute(&self, index: usize, input: &PluginInput) -> Result<PluginOutput>
Execute a plugin by index.
Sourcepub fn execute_by_name(
&self,
name: &str,
input: &PluginInput,
) -> Result<PluginOutput>
pub fn execute_by_name( &self, name: &str, input: &PluginInput, ) -> Result<PluginOutput>
Execute a plugin by name.
Sourcepub fn execute_all(&self, input: PluginInput) -> Result<PluginOutput>
pub fn execute_all(&self, input: PluginInput) -> Result<PluginOutput>
Execute all loaded plugins in sequence.
Sourcepub fn plugin_info(&self) -> Vec<(&Path, SystemTime)>
pub fn plugin_info(&self) -> Vec<(&Path, SystemTime)>
Get plugin paths and their last modification times.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for WatchingPluginManager
impl !RefUnwindSafe for WatchingPluginManager
impl Send for WatchingPluginManager
impl Sync for WatchingPluginManager
impl Unpin for WatchingPluginManager
impl !UnwindSafe for WatchingPluginManager
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.