diff --git a/src/message_ast/convert_matrix.rs b/src/message_ast/convert_matrix.rs index a8701a7..d899c25 100644 --- a/src/message_ast/convert_matrix.rs +++ b/src/message_ast/convert_matrix.rs @@ -39,23 +39,14 @@ pub fn convert_matrix(message: &str) -> MessageContent { components.push(MessageComponent::Plain(text.borrow().clone())); } NodeData::Element(element) => { - fn __construct_component( - component_type: fn(MessageContent) -> MessageComponent, - components: MessageContent, - parents: &mut Vec, - ) -> MessageContent { - if let Some(mut parent_components) = parents.pop() { - parent_components.push((component_type)(components)); - parent_components - } else { - vec![] - } - } - macro_rules! construct_component { - ($f:expr) => { - components = __construct_component($f, components, &mut parents); - }; + ($f:expr) => {{ + let component_type = $f; + if let Some(mut parent_components) = parents.pop() { + parent_components.push((component_type)(components)); + components = parent_components; + } + }}; } if element.name.ns == ns!(html) {