From 63704d601070815101c24e6ac48896c34a6ce004 Mon Sep 17 00:00:00 2001 From: Nikita Vilunov Date: Mon, 27 Mar 2023 23:47:14 +0200 Subject: [PATCH] use macro in muc parsing --- src/protos/xmpp/muc/mod.rs | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/src/protos/xmpp/muc/mod.rs b/src/protos/xmpp/muc/mod.rs index 9c1ba6c..91ae1d6 100644 --- a/src/protos/xmpp/muc/mod.rs +++ b/src/protos/xmpp/muc/mod.rs @@ -124,30 +124,10 @@ impl FromXml for X { _ => return Err(ffail!("Unexpected XML event: {event:?}")), }; if bytes.name().0 == Password::NAME.as_bytes() { - let mut parser = Password::parse().consume(namespace, event); - let password = loop { - match parser { - Continuation::Final(Ok(res)) => break Ok(res), - Continuation::Final(Err(err)) => break Err(err), - Continuation::Continue(p) => { - let (namespace, event) = yield; - parser = p.consume(namespace, event); - } - } - }?; + let password = delegate_parsing!(Password, namespace, event)?; res.password = Some(password); } else if bytes.name().0 == History::NAME.as_bytes() { - let mut parser = History::parse().consume(namespace, event); - let history = loop { - match parser { - Continuation::Final(Ok(res)) => break Ok(res), - Continuation::Final(Err(err)) => break Err(err), - Continuation::Continue(p) => { - let (namespace, event) = yield; - parser = p.consume(namespace, event); - } - } - }?; + let history = delegate_parsing!(History, namespace, event)?; res.history = Some(history); } else { return Err(ffail!("Unexpected XML event: {event:?}"));