BuiltinProvider

Trait BuiltinProvider 

Source
pub trait BuiltinProvider: Send + Sync {
    // Required methods
    fn list_builtins(&self) -> Vec<String>;
    fn load_builtin(&self, id: &str) -> Result<Vec<u8>, String>;

    // Provided methods
    fn has_builtin(&self, id: &str) -> bool { ... }
    fn get_builtin_metadata(&self, _id: &str) -> Option<BuiltinMetadata> { ... }
}
Expand description

Builtin plugin provider interface

Platforms implement this trait to provide access to builtin plugins. Builtins are WASM plugins distributed in a platform-specific way:

  • Desktop: mods/builtin/ directory
  • WebUI: Bundled in web app assets
  • Headless: Embedded via include_bytes!

Required Methods§

Source

fn list_builtins(&self) -> Vec<String>

List all available builtin plugin IDs

Returns IDs in no particular order. Example: ["chromatic-aberration", "pixelate", "flash"]

Source

fn load_builtin(&self, id: &str) -> Result<Vec<u8>, String>

Load a builtin plugin by ID

§Arguments
  • id - Builtin plugin ID (e.g., “chromatic-aberration”)
§Returns
  • Ok(bytes) - WASM bytes for the builtin plugin
  • Err(String) - Error if builtin not found or load failed
§Example
let wasm = provider.load_builtin("chromatic-aberration")?;
assert!(!wasm.is_empty());

Provided Methods§

Source

fn has_builtin(&self, id: &str) -> bool

Check if a builtin exists

Default implementation scans the list, but platforms may override for more efficient checking.

Source

fn get_builtin_metadata(&self, _id: &str) -> Option<BuiltinMetadata>

Get builtin metadata without loading WASM

Optional optimization: Return manifest without full WASM parse. Default implementation returns None (requires full load).

Implementors§