Skip to main content

Crate rustledger_plugin

Crate rustledger_plugin 

Source
Expand description

Beancount WASM Plugin Runtime.

This crate provides a plugin system for extending Beancount’s functionality. Plugins can be written in any language that compiles to WebAssembly, or as native Rust code for maximum performance.

§Architecture

The plugin system uses wasmtime as the WASM runtime with MessagePack serialization for passing data across the WASM boundary.

§Plugin Types

  • WASM Plugins: Sandboxed plugins loaded from .wasm files
  • Native Plugins: Built-in plugins implemented in Rust

§Built-in Plugins (30)

See the plugin reference for the full list.

§Example

use rustledger_plugin::{PluginManager, PluginInput, PluginOptions};

let mut manager = PluginManager::new();
manager.load(Path::new("my_plugin.wasm"))?;

let input = PluginInput {
    directives: vec![],
    options: PluginOptions::default(),
    config: None,
};

let output = manager.execute_all(input)?;

Re-exports§

pub use convert::ConversionError;
pub use convert::directive_to_wrapper;
pub use convert::directive_to_wrapper_with_location;
pub use convert::directives_to_wrappers;
pub use convert::wrapper_to_directive;
pub use convert::wrappers_to_directives;
pub use native::DocumentDiscoveryPlugin;
pub use native::NativePlugin;
pub use native::NativePluginRegistry;
pub use runtime::Plugin;
pub use runtime::PluginManager;
pub use runtime::RuntimeConfig;
pub use runtime::WatchingPluginManager;
pub use runtime::validate_plugin_module;

Modules§

convert
Conversion between core types and plugin serialization types.
native
Native (non-WASM) plugin support.
runtime
WASM Plugin Runtime.
test_helpers
Helpers shared between in-crate tests and integration tests.
types
Plugin interface types.

Structs§

DirectiveWrapper
A wrapper around directives for serialization.
PluginError
Error generated by a plugin.
PluginInput
Input passed to a plugin.
PluginOptions
Ledger options passed to plugins.
PluginOutput
Output returned from a plugin.

Enums§

PluginErrorSeverity
Severity of a plugin error.
PluginOp
One operation in a PluginOutput’s ordered op list.