57 lines
1.1 KiB
Rust
57 lines
1.1 KiB
Rust
/// 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),*)
|
|
}
|
|
}
|
|
}
|