summaryrefslogtreecommitdiff
path: root/src/tasks.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tasks.rs')
-rw-r--r--src/tasks.rs34
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()))
}
}