summaryrefslogtreecommitdiffstats
path: root/src/annotation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/annotation.rs')
-rw-r--r--src/annotation.rs37
1 files changed, 4 insertions, 33 deletions
diff --git a/src/annotation.rs b/src/annotation.rs
index a01f02a..b2b3b8a 100644
--- a/src/annotation.rs
+++ b/src/annotation.rs
@@ -13,7 +13,6 @@ use serde::Serializer;
use serde::Deserialize;
use serde::Deserializer;
use serde::de::Visitor;
-use serde::ser::MapVisitor;
use serde::de::MapVisitor as DeserializeMapVisitor;
use date::Date;
@@ -54,38 +53,10 @@ impl Serialize for Annotation {
fn serialize<S>(&self, serializer: &mut S) -> RResult<(), S::Error>
where S: Serializer
{
- serializer.serialize_struct("Annotation", AnnotationVisitor {
- value: self,
- state: 0,
- })
- }
-
-}
-
-/// Helper type for the `Serialize` implementation
-struct AnnotationVisitor<'a> {
- value: &'a Annotation,
- state: u8,
-}
-
-impl<'a> MapVisitor for AnnotationVisitor<'a> {
-
- fn visit<S>(&mut self, serializer: &mut S) -> RResult<Option<()>, S::Error>
- where S: Serializer
- {
- match self.state {
- 0 => {
- self.state += 1;
- Ok(Some(try!(serializer.serialize_struct_elt("entry", &self.value.entry))))
- },
- 1 => {
- self.state += 1;
- Ok(Some(try!(serializer.serialize_struct_elt("description", &self.value.description))))
- },
- _ => {
- Ok(None)
- }
- }
+ let mut state = try!(serializer.serialize_struct("Annotation", 2));
+ try!(serializer.serialize_struct_elt(&mut state, "entry", &self.entry));
+ try!(serializer.serialize_struct_elt(&mut state, "description", &self.description));
+ serializer.serialize_struct_end(state)
}
}