From 4cf63eb00d9e43056f40b122642b2e40a7ee120e Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 3 Feb 2017 08:31:48 +0100 Subject: Try out whether deriving works --- src/priority.rs | 59 +-------------------------------------------------------- 1 file changed, 1 insertion(+), 58 deletions(-) (limited to 'src/priority.rs') diff --git a/src/priority.rs b/src/priority.rs index d9a2554..20fd673 100644 --- a/src/priority.rs +++ b/src/priority.rs @@ -6,18 +6,8 @@ //! Module containing TaskPriority types and trait impls -use serde::Serialize; -use serde::ser::Serializer; -use serde::de::Deserialize; -use serde::de::Deserializer; -use serde::de::Error as DeError; -use serde::de::Visitor; - -use std::fmt::Formatter; -use std::fmt::Result as FmtResult; - /// Enum for the priorities taskwarrior supports. -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum TaskPriority { /// Low prio for a Task Low, @@ -29,50 +19,3 @@ pub enum TaskPriority { High, } - -impl Serialize for TaskPriority { - - fn serialize(&self, serializer: S) -> Result - where S: Serializer - { - serializer.serialize_str( - match self { - &TaskPriority::Low => "L", - &TaskPriority::Medium => "M", - &TaskPriority::High => "H", - } - ) - } - -} - -impl Deserialize for TaskPriority { - - fn deserialize(deserializer: D) -> Result - where D: Deserializer - { - struct TaskPriorityVisitor; - - impl Visitor for TaskPriorityVisitor { - type Value = TaskPriority; - - fn expecting(&self, fmt: &mut Formatter) -> FmtResult { - write!(fmt, "one of 'L', 'M', 'H'") - } - - fn visit_str(self, value: &str) -> Result - where E: DeError - { - match value { - "L" => Ok(TaskPriority::Low), - "M" => Ok(TaskPriority::Medium), - "H" => Ok(TaskPriority::High), - _ => Err(DeError::custom("expected one of 'L', 'M', 'H'")), - } - } - } - - deserializer.deserialize(TaskPriorityVisitor) - } -} - -- cgit v1.2.3