Skip to main content

revue/plugin/
mod.rs

1//! Plugin system for extending Revue applications
2//!
3//! Plugins provide a modular way to extend app functionality with lifecycle hooks,
4//! custom styles, and shared state.
5//!
6//! # Example
7//!
8//! ```rust,ignore
9//! use revue::plugin::{Plugin, PluginContext};
10//! use std::time::Duration;
11//!
12//! struct LoggerPlugin {
13//!     event_count: usize,
14//! }
15//!
16//! impl Plugin for LoggerPlugin {
17//!     fn name(&self) -> &str { "logger" }
18//!
19//!     fn on_init(&mut self, _ctx: &mut PluginContext) -> revue::Result<()> {
20//!         println!("[Logger] Plugin initialized");
21//!         Ok(())
22//!     }
23//!
24//!     fn on_tick(&mut self, _ctx: &mut PluginContext, delta: Duration) -> revue::Result<()> {
25//!         self.event_count += 1;
26//!         Ok(())
27//!     }
28//! }
29//!
30//! // Usage
31//! let app = App::builder()
32//!     .plugin(LoggerPlugin { event_count: 0 })
33//!     .build();
34//! ```
35
36mod context;
37mod registry;
38mod traits;
39
40pub use context::PluginContext;
41pub use registry::PluginRegistry;
42pub use traits::Plugin;
43
44// Built-in plugins
45mod builtin;
46pub use builtin::{LoggerPlugin, PerformancePlugin};