diff --git a/serde-aco/src/de.rs b/serde-aco/src/de.rs
index ea6d96d..583f52d 100644
--- a/serde-aco/src/de.rs
+++ b/serde-aco/src/de.rs
@@ -166,10 +166,10 @@ impl<'s, 'o, 'a> de::Deserializer<'s> for &'a mut Deserializer<'s, 'o> {
V: Visitor<'s>,
{
let id = self.consume_input();
- if id.is_empty() {
+ let s = self.deref_id(id);
+ if id.starts_with("id_") && s.is_empty() {
visitor.visit_none()
} else {
- let s = self.deref_id(id);
let mut sub_de = Deserializer { input: s, ..*self };
visitor.visit_some(&mut sub_de)
}
@@ -540,13 +540,13 @@ mod test {
#[test]
fn test_option() {
- assert_eq!(from_arg::