@@ -750,20 +750,6 @@ pub(crate) async fn update_from_dist(
750
750
}
751
751
}
752
752
753
- let res = update_from_dist_ ( prefix, opts) . await ;
754
- // Don't leave behind an empty / broken installation directory
755
- if res. is_err ( ) && fresh_install {
756
- // FIXME Ignoring cascading errors
757
- let _ = utils:: remove_dir ( "toolchain" , prefix. path ( ) , opts. dl_cfg . notify_handler ) ;
758
- }
759
-
760
- res
761
- }
762
-
763
- async fn update_from_dist_ (
764
- prefix : & InstallPrefix ,
765
- opts : & DistOptions < ' _ > ,
766
- ) -> Result < Option < String > > {
767
753
let mut fetched = String :: new ( ) ;
768
754
let mut first_err = None ;
769
755
let backtrack = opts. desc . channel == "nightly" && opts. desc . date . is_none ( ) ;
@@ -811,7 +797,7 @@ async fn update_from_dist_(
811
797
} ;
812
798
813
799
let mut toolchain = opts. desc . clone ( ) ;
814
- loop {
800
+ let res = loop {
815
801
let result = try_update_from_dist_ (
816
802
opts. dl_cfg ,
817
803
opts. update_hash ,
@@ -829,8 +815,8 @@ async fn update_from_dist_(
829
815
. await ;
830
816
831
817
let e = match result {
832
- Ok ( v) => return Ok ( v) ,
833
- Err ( e) if !backtrack => return Err ( e) ,
818
+ Ok ( v) => break Ok ( v) ,
819
+ Err ( e) if !backtrack => break Err ( e) ,
834
820
Err ( e) => e,
835
821
} ;
836
822
@@ -892,7 +878,15 @@ async fn update_from_dist_(
892
878
}
893
879
894
880
toolchain. date = Some ( try_next. format ( "%Y-%m-%d" ) . to_string ( ) ) ;
881
+ } ;
882
+
883
+ // Don't leave behind an empty / broken installation directory
884
+ if res. is_err ( ) && fresh_install {
885
+ // FIXME Ignoring cascading errors
886
+ let _ = utils:: remove_dir ( "toolchain" , prefix. path ( ) , opts. dl_cfg . notify_handler ) ;
895
887
}
888
+
889
+ res
896
890
}
897
891
898
892
async fn try_update_from_dist_ (
0 commit comments