| /// Syntax sugar for initializing an `ActionList` | |
| /// | |
| /// # Example | |
| /// | |
| /// ```ignore | |
| /// actions!(DocumentMessage::Undo, DocumentMessage::Redo); | |
| /// ``` | |
| /// | |
| /// expands to: | |
| /// ```ignore | |
| /// vec![vec![DocumentMessage::Undo, DocumentMessage::Redo]]; | |
| /// ``` | |
| /// | |
| /// and | |
| /// ```ignore | |
| /// actions!(DocumentMessage; | |
| /// Undo, | |
| /// Redo, | |
| /// ); | |
| /// ``` | |
| /// | |
| /// expands to: | |
| /// ```ignore | |
| /// vec![vec![DocumentMessage::Undo, DocumentMessage::Redo]]; | |
| /// ``` | |
| /// | |
| macro_rules! actions { | |
| ($($v:expr_2021),* $(,)?) => {{ | |
| vec![$(vec![$v.into()]),*] | |
| }}; | |
| ($name:ident; $($v:ident),* $(,)?) => {{ | |
| vec![vec![$(($name::$v).into()),*]] | |
| }}; | |
| } | |
| /// Does the same thing as the `actions!` macro but wraps everything in: | |
| /// | |
| /// ```ignore | |
| /// fn actions(&self) -> ActionList { | |
| /// actions!(…) | |
| /// } | |
| /// ``` | |
| macro_rules! advertise_actions { | |
| ($($v:expr_2021),* $(,)?) => { | |
| fn actions(&self) -> $crate::utility_traits::ActionList { | |
| actions!($($v),*) | |
| } | |
| }; | |
| ($name:ident; $($v:ident),* $(,)?) => { | |
| fn actions(&self) -> $crate::utility_traits::ActionList { | |
| actions!($name; $($v),*) | |
| } | |
| } | |
| } | |