diff --git a/instant-xml/src/de.rs b/instant-xml/src/de.rs
index 9952ddb..ab770fc 100644
--- a/instant-xml/src/de.rs
+++ b/instant-xml/src/de.rs
@@ -353,6 +353,7 @@ impl<'xml> Iterator for Context<'xml> {
false => return Some(Err(Error::UnexpectedToken(format!("{token:?}")))),
true => {}
},
+ Ok(Token::Comment { .. }) => continue,
Ok(token) => return Some(Err(Error::UnexpectedToken(format!("{token:?}")))),
Err(e) => return Some(Err(Error::Parse(e))),
}
diff --git a/instant-xml/tests/direct.rs b/instant-xml/tests/direct.rs
index 8b34b1b..17e1f28 100644
--- a/instant-xml/tests/direct.rs
+++ b/instant-xml/tests/direct.rs
@@ -2,7 +2,7 @@ use similar_asserts::assert_eq;
use instant_xml::{from_str, to_string, FromXml, ToXml};
-#[derive(Debug, Eq, FromXml, PartialEq, ToXml)]
+#[derive(Clone, Debug, Eq, FromXml, PartialEq, ToXml)]
struct Foo {
#[xml(attribute)]
flag: bool,
@@ -19,5 +19,14 @@ fn direct() {
let xml = "cbdté";
assert_eq!(to_string(&v).unwrap(), xml);
+ assert_eq!(from_str::(xml), Ok(v.clone()));
+
+ let xml = "cbdté";
+ assert_eq!(from_str::(xml), Ok(v.clone()));
+
+ let xml = "cbdté";
+ assert_eq!(from_str::(xml), Ok(v.clone()));
+
+ let xml = "cbdté";
assert_eq!(from_str::(xml), Ok(v));
}