diff options
author | Craig Disselkoen <[email protected]> | 2020-05-06 00:09:39 +0100 |
---|---|---|
committer | Craig Disselkoen <[email protected]> | 2020-05-06 00:12:56 +0100 |
commit | 1b76b4281e90292922455a9192f82a2b6b80d279 (patch) | |
tree | fa54e6d62deeec040de8b3eb4512ebe3d282c23b /crates | |
parent | c9b395be2bfcd67e045c1031143b7e8c27a6d3fb (diff) |
simplify some code using early returns
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ra_env/src/lib.rs | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/crates/ra_env/src/lib.rs b/crates/ra_env/src/lib.rs index c7b49e997..8d6aa9268 100644 --- a/crates/ra_env/src/lib.rs +++ b/crates/ra_env/src/lib.rs | |||
@@ -33,31 +33,24 @@ pub fn get_path_for_executable(executable_name: impl AsRef<str>) -> Result<Strin | |||
33 | ))) | 33 | ))) |
34 | } | 34 | } |
35 | } else { | 35 | } else { |
36 | let final_path: Option<String> = if is_valid_executable(executable_name) { | 36 | if is_valid_executable(executable_name) { |
37 | Some(executable_name.to_owned()) | 37 | return Ok(executable_name.to_owned()); |
38 | } else { | 38 | } |
39 | if let Some(mut path) = dirs::home_dir() { | 39 | if let Some(mut path) = dirs::home_dir() { |
40 | path.push(".cargo"); | 40 | path.push(".cargo"); |
41 | path.push("bin"); | 41 | path.push("bin"); |
42 | path.push(executable_name); | 42 | path.push(executable_name); |
43 | if is_valid_executable(&path) { | 43 | if is_valid_executable(&path) { |
44 | Some(path.into_os_string().into_string().expect("Invalid Unicode in path")) | 44 | return Ok(path.into_os_string().into_string().expect("Invalid Unicode in path")); |
45 | } else { | ||
46 | None | ||
47 | } | ||
48 | } else { | ||
49 | None | ||
50 | } | 45 | } |
51 | }; | 46 | } |
52 | final_path.ok_or( | 47 | // This error message may also be caused by $PATH or $CARGO/$RUSTC/etc not being set correctly |
53 | // This error message may also be caused by $PATH or $CARGO/$RUSTC/etc not being set correctly | 48 | // for VSCode, even if they are set correctly in a terminal. |
54 | // for VSCode, even if they are set correctly in a terminal. | 49 | // On macOS in particular, launching VSCode from terminal with `code <dirname>` causes VSCode |
55 | // On macOS in particular, launching VSCode from terminal with `code <dirname>` causes VSCode | 50 | // to inherit environment variables including $PATH, $CARGO, $RUSTC, etc from that terminal; |
56 | // to inherit environment variables including $PATH, $CARGO, $RUSTC, etc from that terminal; | 51 | // but launching VSCode from Dock does not inherit environment variables from a terminal. |
57 | // but launching VSCode from Dock does not inherit environment variables from a terminal. | 52 | // For more discussion, see #3118. |
58 | // For more discussion, see #3118. | 53 | Err(Error::msg(format!("Failed to find `{}` executable. Make sure `{}` is in `$PATH`, or set `${}` to point to a valid executable.", executable_name, executable_name, env_var))) |
59 | Error::msg(format!("Failed to find `{}` executable. Make sure `{}` is in `$PATH`, or set `${}` to point to a valid executable.", executable_name, executable_name, env_var)) | ||
60 | ) | ||
61 | } | 54 | } |
62 | } | 55 | } |
63 | 56 | ||