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};