Skip to main content

RyditModule

Trait RyditModule 

Source
pub trait RyditModule: Send + Sync {
    // Required methods
    fn name(&self) -> &'static str;
    fn version(&self) -> &'static str;
    fn register(&self) -> HashMap<&'static str, &'static str>;
    fn execute(&self, command: &str, params: Value) -> ModuleResult;

    // Provided methods
    fn metadata(&self) -> ModuleMetadata { ... }
    fn on_reload(&mut self) { ... }
    fn on_unload(&mut self) { ... }
}
Expand description

Trait que todos los módulos deben implementar

§Ejemplo

use ry_core::{RyditModule, ModuleResult, ModuleMetadata};
use serde_json::Value;
use std::collections::HashMap;

struct MiModulo;

impl RyditModule for MiModulo {
    fn name(&self) -> &'static str { "mi_modulo" }
    fn version(&self) -> &'static str { "1.0.0" }
    fn register(&self) -> HashMap<&'static str, &'static str> {
        let mut cmds = HashMap::new();
        cmds.insert("saludar", "Saluda al usuario");
        cmds
    }
    fn execute(&self, command: &str, params: Value) -> ModuleResult {
        match command {
            "saludar" => Ok(Value::String("Hola!".to_string())),
            _ => Err(ry_core::ModuleError {
                code: "UNKNOWN_COMMAND".to_string(),
                message: format!("Comando desconocido: {}", command),
            }),
        }
    }
}

Required Methods§

Source

fn name(&self) -> &'static str

Nombre único del módulo

Source

fn version(&self) -> &'static str

Versión del módulo

Source

fn register(&self) -> HashMap<&'static str, &'static str>

Registro de comandos disponibles Retorna: HashMap<nombre_comando, descripción>

Source

fn execute(&self, command: &str, params: Value) -> ModuleResult

Ejecuta un comando con parámetros

§Arguments
  • command - Nombre del comando
  • params - Parámetros JSON

Provided Methods§

Source

fn metadata(&self) -> ModuleMetadata

Metadata del módulo (v0.8.2+)

Proporciona información descriptiva para el sistema de plugins y carga dinámica. Por defecto retorna metadata básica.

Source

fn on_reload(&mut self)

Hook llamado antes de recargar el módulo (hot reload)

Permite limpiar recursos o guardar estado antes de una recarga. Por defecto no hace nada.

Source

fn on_unload(&mut self)

Hook llamado al descargar el módulo

Permite limpiar recursos asignados. Por defecto no hace nada.

Trait Implementations§

Source§

impl RyditModule for Box<dyn RyditModule>

Permite registrar Box<dyn RyditModule> directamente Necesario para carga dinámica (libloading) donde el módulo ya viene como Box<dyn RyditModule>

Source§

fn name(&self) -> &'static str

Nombre único del módulo
Source§

fn version(&self) -> &'static str

Versión del módulo
Source§

fn register(&self) -> HashMap<&'static str, &'static str>

Registro de comandos disponibles Retorna: HashMap<nombre_comando, descripción>
Source§

fn execute(&self, command: &str, params: Value) -> ModuleResult

Ejecuta un comando con parámetros Read more
Source§

fn metadata(&self) -> ModuleMetadata

Metadata del módulo (v0.8.2+) Read more
Source§

fn on_reload(&mut self)

Hook llamado antes de recargar el módulo (hot reload) Read more
Source§

fn on_unload(&mut self)

Hook llamado al descargar el módulo Read more

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl RyditModule for Box<dyn RyditModule>

Permite registrar Box<dyn RyditModule> directamente Necesario para carga dinámica (libloading) donde el módulo ya viene como Box<dyn RyditModule>

Source§

fn name(&self) -> &'static str

Source§

fn version(&self) -> &'static str

Source§

fn register(&self) -> HashMap<&'static str, &'static str>

Source§

fn execute(&self, command: &str, params: Value) -> ModuleResult

Source§

fn metadata(&self) -> ModuleMetadata

Source§

fn on_reload(&mut self)

Source§

fn on_unload(&mut self)

Implementors§