From 4df8bdb431fd792a8261d85d23b660346d8bac6c Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 4 Nov 2016 13:54:27 +0100 Subject: De/serialize "id" as Task field --- src/task.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/task.rs') diff --git a/src/task.rs b/src/task.rs index 4235fef..4caf94b 100644 --- a/src/task.rs +++ b/src/task.rs @@ -41,6 +41,8 @@ use uda::{UDA, UDAName, UDAValue}; /// tasks is simply serializing and deserializing objects of this type. #[derive(Debug, Clone)] pub struct Task { + id : Option, + status : TaskStatus, uuid : Uuid, entry : Date, @@ -73,6 +75,8 @@ impl Task { /// Create a new Task instance pub fn new( + id : Option, + status : TaskStatus, uuid : Uuid, entry : Date, @@ -98,6 +102,7 @@ impl Task { ) -> Task { Task { + id : id, status : status, uuid : uuid, entry : entry, @@ -123,6 +128,11 @@ impl Task { } } + /// Get the id of the task + pub fn id(&self) -> Option { + self.id + } + /// Get the status of the task pub fn status(&self) -> &TaskStatus { &self.status @@ -343,6 +353,7 @@ impl Serialize for Task { where S: Serializer { let mut state = try!(serializer.serialize_struct("Task", 19)); + try!(serializer.serialize_struct_elt(&mut state, "id", self.id)); try!(serializer.serialize_struct_elt(&mut state, "status", &self.status)); try!(serializer.serialize_struct_elt(&mut state, "uuid", &self.uuid)); try!(serializer.serialize_struct_elt(&mut state, "entry", &self.entry)); @@ -420,6 +431,7 @@ impl Deserialize for Task { where D: Deserializer { static FIELDS: &'static [&'static str] = &[ + "id", "status", "uuid", "entry", @@ -457,6 +469,8 @@ impl Visitor for TaskDeserializeVisitor { fn visit_map(&mut self, mut visitor: V) -> RResult where V: DeserializeMapVisitor { + let mut id = None; + let mut status = None; let mut uuid = None; let mut entry = None; @@ -488,6 +502,10 @@ impl Visitor for TaskDeserializeVisitor { let key = key.unwrap(); match &key[..] { + "id" => { + id = Some(try!(visitor.visit_value())); + }, + "status" => { status = Some(try!(visitor.visit_value())); }, @@ -581,6 +599,7 @@ impl Visitor for TaskDeserializeVisitor { try!(visitor.end()); let task = Task::new( + id, status, uuid, entry, -- cgit v1.2.3