diff options
| author | Jokler <jokler.contact@gmail.com> | 2017-10-07 17:14:06 +0200 |
|---|---|---|
| committer | Jokler <jokler.contact@gmail.com> | 2017-10-11 15:41:32 +0200 |
| commit | 735f59e3421d9cd9aa908318880467e93af2d788 (patch) | |
| tree | 3199ea6e8e8cc9018b1e73166ba30ca5174e0cb3 /src/plugin.rs | |
| parent | a0c65a073c5bb88ccd36a22ee37685d679b3f3a1 (diff) | |
| download | frippy-735f59e3421d9cd9aa908318880467e93af2d788.tar.gz frippy-735f59e3421d9cd9aa908318880467e93af2d788.zip | |
Add the Display trait to Plugins
Diffstat (limited to 'src/plugin.rs')
| -rw-r--r-- | src/plugin.rs | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/plugin.rs b/src/plugin.rs index 473cab1..fdaad43 100644 --- a/src/plugin.rs +++ b/src/plugin.rs @@ -2,7 +2,7 @@ use std::fmt; use irc::client::prelude::*; use irc::error::Error as IrcError; -pub trait Plugin: Send + Sync + fmt::Debug { +pub trait Plugin: Send + Sync + fmt::Display + fmt::Debug { fn is_allowed(&self, server: &IrcServer, message: &Message) -> bool; fn execute(&mut self, server: &IrcServer, message: &Message) -> Result<(), IrcError>; } @@ -10,25 +10,22 @@ pub trait Plugin: Send + Sync + fmt::Debug { #[macro_export] macro_rules! register_plugin { ($t:ident) => { - #[derive(Debug)] - pub struct $t; - - impl $t { - pub fn new() -> $t { - $t { } - } - } - }; + use std::fmt; - ($t:ident, $element: ident: $ty: ty) => { #[derive(Debug)] pub struct $t { - $element: $ty + _name: &'static str, + } + + impl fmt::Display for $t { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{}", self._name) + } } impl $t { pub fn new() -> $t { - $t { $element: <$ty>::new() } + $t { _name: stringify!($t) } } } }; |
