From 6a3ec2dfa51d92930e028c2ea5af199dbcc813f8 Mon Sep 17 00:00:00 2001
From: Aleksey Kladov <aleksey.kladov@gmail.com>
Date: Sun, 16 Feb 2020 18:20:22 +0100
Subject: Refactor arg parsing

---
 crates/ra_cli/src/main.rs | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

(limited to 'crates/ra_cli/src')

diff --git a/crates/ra_cli/src/main.rs b/crates/ra_cli/src/main.rs
index 749317475..9c23cf001 100644
--- a/crates/ra_cli/src/main.rs
+++ b/crates/ra_cli/src/main.rs
@@ -132,18 +132,15 @@ fn main() -> Result<()> {
             }
             let verbose = matches.contains(["-v", "--verbose"]);
             let path: String = matches.opt_value_from_str("--path")?.unwrap_or_default();
-            let highlight_path = matches.opt_value_from_str("--highlight")?;
+            let highlight_path: Option<String> = matches.opt_value_from_str("--highlight")?;
             let complete_path: Option<String> = matches.opt_value_from_str("--complete")?;
-            if highlight_path.is_some() && complete_path.is_some() {
-                panic!("either --highlight or --complete must be set, not both")
-            }
-            let op = if let Some(path) = highlight_path {
-                let path: String = path;
-                analysis_bench::Op::Highlight { path: path.into() }
-            } else if let Some(position) = complete_path {
-                analysis_bench::Op::Complete(position.parse()?)
-            } else {
-                panic!("either --highlight or --complete must be set")
+            let op = match (highlight_path, complete_path) {
+                (Some(path), None) => {
+                    let path: String = path;
+                    analysis_bench::Op::Highlight { path: path.into() }
+                }
+                (None, Some(position)) => analysis_bench::Op::Complete(position.parse()?),
+                _ => panic!("exactly one of  `--highlight`, `--complete` must be set"),
             };
             matches.finish().or_else(handle_extra_flags)?;
             analysis_bench::run(verbose, path.as_ref(), op)?;
-- 
cgit v1.2.3