diff options
Diffstat (limited to 'src/tasks.rs')
| -rw-r--r-- | src/tasks.rs | 34 |
1 files changed, 5 insertions, 29 deletions
diff --git a/src/tasks.rs b/src/tasks.rs index bfa24e8..ad41a35 100644 --- a/src/tasks.rs +++ b/src/tasks.rs @@ -115,39 +115,15 @@ pub enum IntoTaskErr { NotFound(String), } -pub trait IntoTask { - fn into_task<'a>(self) -> Result<&'a Task, IntoTaskErr>; -} - -impl IntoTask for String { - fn into_task<'a>(self) -> Result<&'a Task, IntoTaskErr> { - for task in TASKS { - if task.name == self { - return Ok(task); - } - } - Err(IntoTaskErr::NotFound(self)) - } -} - -impl IntoTask for &str { - fn into_task<'a>(self) -> Result<&'a Task, IntoTaskErr> { - for task in TASKS { - if task.name == self { - return Ok(task); - } - } - Err(IntoTaskErr::NotFound(self.to_string())) - } -} +impl TryFrom<&str> for &Task { + type Error = IntoTaskErr; -impl IntoTask for &Task { - fn into_task<'a>(self) -> Result<&'a Task, IntoTaskErr> { + fn try_from(value: &str) -> Result<Self, Self::Error> { for task in TASKS { - if task == self { + if task.name == value { return Ok(task); } } - Err(IntoTaskErr::NotFound(self.name.to_string())) + Err(IntoTaskErr::NotFound(value.to_string())) } } |
