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§
Provided Methods§
Sourcefn metadata(&self) -> ModuleMetadata
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.
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>
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 register(&self) -> HashMap<&'static str, &'static str>
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
fn execute(&self, command: &str, params: Value) -> ModuleResult
Ejecuta un comando con parámetros Read more
Source§fn metadata(&self) -> ModuleMetadata
fn metadata(&self) -> ModuleMetadata
Metadata del módulo (v0.8.2+) Read more
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>
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>