@@ -63,17 +63,21 @@ fn get_path_for_executable(executable_name: &'static str) -> PathBuf {
63
63
// The current implementation checks three places for an executable to use:
64
64
// 1) Appropriate environment variable (erroring if this is set but not a usable executable)
65
65
// example: for cargo, this checks $CARGO environment variable; for rustc, $RUSTC; etc
66
- // 2) `$CARGO_HOME/bin/<executable_name>`
66
+ // 2) `<executable_name>`
67
+ // example: for cargo, this tries just `cargo`, which will succeed if `cargo` is on the $PATH
68
+ // 3) `$CARGO_HOME/bin/<executable_name>`
67
69
// where $CARGO_HOME defaults to ~/.cargo (see https://doc.rust-lang.org/cargo/guide/cargo-home.html)
68
70
// example: for cargo, this tries $CARGO_HOME/bin/cargo, or ~/.cargo/bin/cargo if $CARGO_HOME is unset.
69
71
// It seems that this is a reasonable place to try for cargo, rustc, and rustup
70
- // 3) `<executable_name>`
71
- // example: for cargo, this tries just `cargo`, which will succeed if `cargo` is on the $PATH
72
72
let env_var = executable_name. to_ascii_uppercase ( ) ;
73
73
if let Some ( path) = env:: var_os ( env_var) {
74
74
return path. into ( ) ;
75
75
}
76
76
77
+ if lookup_in_path ( executable_name) {
78
+ return executable_name. into ( ) ;
79
+ }
80
+
77
81
if let Some ( mut path) = get_cargo_home ( ) {
78
82
path. push ( "bin" ) ;
79
83
path. push ( executable_name) ;
@@ -82,10 +86,6 @@ fn get_path_for_executable(executable_name: &'static str) -> PathBuf {
82
86
}
83
87
}
84
88
85
- if lookup_in_path ( executable_name) {
86
- return executable_name. into ( ) ;
87
- }
88
-
89
89
executable_name. into ( )
90
90
}
91
91
0 commit comments