@@ -733,38 +733,26 @@ impl<'a> CrateLocator<'a> {
733
733
let Some ( file) = loc_orig. file_name ( ) . and_then ( |s| s. to_str ( ) ) else {
734
734
return Err ( CrateError :: ExternLocationNotFile ( self . crate_name , loc_orig. clone ( ) ) ) ;
735
735
} ;
736
- // FnMut cannot return reference to captured value, so references
737
- // must be taken outside the closure.
738
- let rlibs = & mut rlibs;
739
- let rmetas = & mut rmetas;
740
- let dylibs = & mut dylibs;
741
- let type_via_filename = ( || {
742
- if file. starts_with ( "lib" ) {
743
- if file. ends_with ( ".rlib" ) {
744
- return Some ( rlibs) ;
745
- }
746
- if file. ends_with ( ".rmeta" ) {
747
- return Some ( rmetas) ;
748
- }
749
- }
750
- let dll_prefix = self . target . dll_prefix . as_ref ( ) ;
751
- let dll_suffix = self . target . dll_suffix . as_ref ( ) ;
752
- if file. starts_with ( dll_prefix) && file. ends_with ( dll_suffix) {
753
- rmetas. insert ( loc_canon. with_extension ( "rmeta" ) , PathKind :: ExternFlag ) ;
754
- return Some ( dylibs) ;
755
- }
756
- None
757
- } ) ( ) ;
758
- match type_via_filename {
759
- Some ( type_via_filename) => {
760
- type_via_filename. insert ( loc_canon. clone ( ) , PathKind :: ExternFlag ) ;
736
+ if file. starts_with ( "lib" ) {
737
+ if file. ends_with ( ".rlib" ) {
738
+ rlibs. insert ( loc_canon. clone ( ) , PathKind :: ExternFlag ) ;
739
+ continue ;
761
740
}
762
- None => {
763
- self . crate_rejections
764
- . via_filename
765
- . push ( CrateMismatch { path : loc_orig. clone ( ) , got : String :: new ( ) } ) ;
741
+ if file. ends_with ( ".rmeta" ) {
742
+ rmetas. insert ( loc_canon. clone ( ) , PathKind :: ExternFlag ) ;
743
+ continue ;
766
744
}
767
745
}
746
+ let dll_prefix = self . target . dll_prefix . as_ref ( ) ;
747
+ let dll_suffix = self . target . dll_suffix . as_ref ( ) ;
748
+ if file. starts_with ( dll_prefix) && file. ends_with ( dll_suffix) {
749
+ rmetas. insert ( loc_canon. with_extension ( "rmeta" ) , PathKind :: ExternFlag ) ;
750
+ dylibs. insert ( loc_canon. clone ( ) , PathKind :: ExternFlag ) ;
751
+ continue ;
752
+ }
753
+ self . crate_rejections
754
+ . via_filename
755
+ . push ( CrateMismatch { path : loc_orig. clone ( ) , got : String :: new ( ) } ) ;
768
756
}
769
757
770
758
// Extract the dylib/rlib/rmeta triple.
0 commit comments