summaryrefslogtreecommitdiffstats
path: root/src/priority.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/priority.rs')
-rw-r--r--src/priority.rs19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/priority.rs b/src/priority.rs
index f9f365f..d9a2554 100644
--- a/src/priority.rs
+++ b/src/priority.rs
@@ -10,9 +10,12 @@ use serde::Serialize;
use serde::ser::Serializer;
use serde::de::Deserialize;
use serde::de::Deserializer;
-use serde::Error;
+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)]
pub enum TaskPriority {
@@ -29,7 +32,7 @@ pub enum TaskPriority {
impl Serialize for TaskPriority {
- fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer
{
serializer.serialize_str(
@@ -45,7 +48,7 @@ impl Serialize for TaskPriority {
impl Deserialize for TaskPriority {
- fn deserialize<D>(deserializer: &mut D) -> Result<TaskPriority, D::Error>
+ fn deserialize<D>(deserializer: D) -> Result<TaskPriority, D::Error>
where D: Deserializer
{
struct TaskPriorityVisitor;
@@ -53,14 +56,18 @@ impl Deserialize for TaskPriority {
impl Visitor for TaskPriorityVisitor {
type Value = TaskPriority;
- fn visit_str<E>(&mut self, value: &str) -> Result<TaskPriority, E>
- where E: Error
+ fn expecting(&self, fmt: &mut Formatter) -> FmtResult {
+ write!(fmt, "one of 'L', 'M', 'H'")
+ }
+
+ fn visit_str<E>(self, value: &str) -> Result<TaskPriority, E>
+ where E: DeError
{
match value {
"L" => Ok(TaskPriority::Low),
"M" => Ok(TaskPriority::Medium),
"H" => Ok(TaskPriority::High),
- _ => Err(Error::custom("expected one of 'L', 'M', 'H'")),
+ _ => Err(DeError::custom("expected one of 'L', 'M', 'H'")),
}
}
}