diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2016-11-04 13:54:27 +0100 |
---|---|---|
committer | Malte Brandy <malte.brandy@maralorn.de> | 2018-04-18 00:41:16 +0200 |
commit | 4df8bdb431fd792a8261d85d23b660346d8bac6c (patch) | |
tree | c9a851811a63ab549ffeb24d17a10ee4ab5f05c3 /src/task.rs | |
parent | 35c70d2714dc894d12b8d5069ef02836ac432f3e (diff) |
De/serialize "id" as Task field
Diffstat (limited to 'src/task.rs')
-rw-r--r-- | src/task.rs | 19 |
1 files changed, 19 insertions, 0 deletions
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<u64>, + status : TaskStatus, uuid : Uuid, entry : Date, @@ -73,6 +75,8 @@ impl Task { /// Create a new Task instance pub fn new( + id : Option<u64>, + 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<u64> { + 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<V>(&mut self, mut visitor: V) -> RResult<Task, V::Error> 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, |