Replace parse_events_target fn with FromStr impl on EventsTarget
https://claude.ai/code/session_01NFGc15XXN1PGGa2hFom7RA
change
commit 81d5cb14cfb191e15ed1882743388139637a1cc4
author Claude <noreply@anthropic.com>
date
parent cdbf443b
diff --git a/quire-ci/src/main.rs b/quire-ci/src/main.rs
index 911fd61..73974c7 100644
--- a/quire-ci/src/main.rs
+++ b/quire-ci/src/main.rs
@@ -183,11 +183,15 @@ enum EventsTarget {
     File(PathBuf),
 }
 
-fn parse_events_target(s: &str) -> EventsTarget {
-    match s {
-        "null" => EventsTarget::Null,
-        "stdout" => EventsTarget::Stdout,
-        path => EventsTarget::File(PathBuf::from(path)),
+impl std::str::FromStr for EventsTarget {
+    type Err = std::convert::Infallible;
+
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Ok(match s {
+            "null" => EventsTarget::Null,
+            "stdout" => EventsTarget::Stdout,
+            path => EventsTarget::File(PathBuf::from(path)),
+        })
     }
 }
 
@@ -259,7 +263,7 @@ fn main() -> Result<()> {
             out_dir,
             bootstrap,
         } => {
-            let sink: Box<dyn EventSink> = match parse_events_target(&events) {
+            let sink: Box<dyn EventSink> = match events.parse::<EventsTarget>().unwrap() {
                 EventsTarget::Null => Box::new(NullSink),
                 EventsTarget::Stdout => Box::new(JsonlSink::new(io::stdout())),
                 EventsTarget::File(path) => {