@@ -50,9 +50,10 @@ impl<'a> Toolchain<'a> {
50
50
) -> anyhow:: Result < Toolchain < ' a > > {
51
51
match Self :: new ( cfg, name) {
52
52
Ok ( tc) => Ok ( tc) ,
53
- Err ( RustupError :: ToolchainNotInstalled ( ToolchainName :: Official ( desc) ) )
54
- if install_if_missing =>
55
- {
53
+ Err ( RustupError :: ToolchainNotInstalled {
54
+ toolchain : ToolchainName :: Official ( desc) ,
55
+ ..
56
+ } ) if install_if_missing => {
56
57
Ok (
57
58
DistributableToolchain :: install ( cfg, & desc, & [ ] , & [ ] , cfg. get_profile ( ) ?, true )
58
59
. await ?
@@ -72,7 +73,7 @@ impl<'a> Toolchain<'a> {
72
73
reason : & ActiveReason ,
73
74
) -> anyhow:: Result < Self > {
74
75
match Self :: new ( cfg, name. clone ( ) ) {
75
- Err ( RustupError :: ToolchainNotInstalled ( _ ) ) => ( ) ,
76
+ Err ( RustupError :: ToolchainNotInstalled { .. } ) => ( ) ,
76
77
result => {
77
78
return Ok ( result?) ;
78
79
}
@@ -106,7 +107,14 @@ impl<'a> Toolchain<'a> {
106
107
let path = cfg. toolchain_path ( & name) ;
107
108
if !Toolchain :: exists ( cfg, & name) ? {
108
109
return Err ( match name {
109
- LocalToolchainName :: Named ( name) => RustupError :: ToolchainNotInstalled ( name) ,
110
+ LocalToolchainName :: Named ( name) => {
111
+ let is_active =
112
+ matches ! ( cfg. find_active_toolchain( ) , Ok ( Some ( ( tc, _) ) ) if tc == name) ;
113
+ RustupError :: ToolchainNotInstalled {
114
+ toolchain : name,
115
+ is_active,
116
+ }
117
+ }
110
118
LocalToolchainName :: Path ( name) => RustupError :: PathToolchainNotInstalled ( name) ,
111
119
} ) ;
112
120
}
0 commit comments