@@ -500,6 +500,7 @@ impl Config {
500500
501501 pub fn parse ( args : & [ String ] ) -> Config {
502502 let flags = Flags :: parse ( & args) ;
503+
503504 let mut config = Config :: default_opts ( ) ;
504505 config. exclude = flags. exclude ;
505506 config. rustc_error_format = flags. rustc_error_format ;
@@ -551,14 +552,14 @@ impl Config {
551552 let has_targets = build. target . is_some ( ) || flags. target . is_some ( ) ;
552553 config. skip_only_host_steps = !has_hosts && has_targets;
553554
554- config. hosts = if let Some ( arg_host) = flags. host . clone ( ) {
555+ config. hosts = if let Some ( arg_host) = flags. host {
555556 arg_host
556557 } else if let Some ( file_host) = build. host {
557558 file_host. iter ( ) . map ( |h| TargetSelection :: from_user ( h) ) . collect ( )
558559 } else {
559560 vec ! [ config. build]
560561 } ;
561- config. targets = if let Some ( arg_target) = flags. target . clone ( ) {
562+ config. targets = if let Some ( arg_target) = flags. target {
562563 arg_target
563564 } else if let Some ( file_target) = build. target {
564565 file_target. iter ( ) . map ( |h| TargetSelection :: from_user ( h) ) . collect ( )
@@ -628,14 +629,14 @@ impl Config {
628629
629630 config. verbose = cmp:: max ( config. verbose , flags. verbose ) ;
630631
631- if let Some ( ref install) = toml. install {
632- config. prefix = install. prefix . clone ( ) . map ( PathBuf :: from) ;
633- config. sysconfdir = install. sysconfdir . clone ( ) . map ( PathBuf :: from) ;
634- config. datadir = install. datadir . clone ( ) . map ( PathBuf :: from) ;
635- config. docdir = install. docdir . clone ( ) . map ( PathBuf :: from) ;
636- set ( & mut config. bindir , install. bindir . clone ( ) . map ( PathBuf :: from) ) ;
637- config. libdir = install. libdir . clone ( ) . map ( PathBuf :: from) ;
638- config. mandir = install. mandir . clone ( ) . map ( PathBuf :: from) ;
632+ if let Some ( install) = toml. install {
633+ config. prefix = install. prefix . map ( PathBuf :: from) ;
634+ config. sysconfdir = install. sysconfdir . map ( PathBuf :: from) ;
635+ config. datadir = install. datadir . map ( PathBuf :: from) ;
636+ config. docdir = install. docdir . map ( PathBuf :: from) ;
637+ set ( & mut config. bindir , install. bindir . map ( PathBuf :: from) ) ;
638+ config. libdir = install. libdir . map ( PathBuf :: from) ;
639+ config. mandir = install. mandir . map ( PathBuf :: from) ;
639640 }
640641
641642 // We want the llvm-skip-rebuild flag to take precedence over the
@@ -658,7 +659,7 @@ impl Config {
658659 let mut optimize = None ;
659660 let mut ignore_git = None ;
660661
661- if let Some ( ref llvm) = toml. llvm {
662+ if let Some ( llvm) = toml. llvm {
662663 match llvm. ccache {
663664 Some ( StringOrBool :: String ( ref s) ) => config. ccache = Some ( s. to_string ( ) ) ,
664665 Some ( StringOrBool :: Bool ( true ) ) => {
@@ -726,7 +727,7 @@ impl Config {
726727 }
727728 }
728729
729- if let Some ( ref rust) = toml. rust {
730+ if let Some ( rust) = toml. rust {
730731 debug = rust. debug ;
731732 debug_assertions = rust. debug_assertions ;
732733 debug_assertions_std = rust. debug_assertions_std ;
@@ -746,7 +747,7 @@ impl Config {
746747 set ( & mut config. test_compare_mode , rust. test_compare_mode ) ;
747748 set ( & mut config. llvm_libunwind , rust. llvm_libunwind ) ;
748749 set ( & mut config. backtrace , rust. backtrace ) ;
749- set ( & mut config. channel , rust. channel . clone ( ) ) ;
750+ set ( & mut config. channel , rust. channel ) ;
750751 set ( & mut config. rust_dist_src , rust. dist_src ) ;
751752 set ( & mut config. verbose_tests , rust. verbose_tests ) ;
752753 // in the case "false" is set explicitly, do not overwrite the command line args
@@ -757,9 +758,9 @@ impl Config {
757758 set ( & mut config. lld_enabled , rust. lld ) ;
758759 set ( & mut config. llvm_tools_enabled , rust. llvm_tools ) ;
759760 config. rustc_parallel = rust. parallel_compiler . unwrap_or ( false ) ;
760- config. rustc_default_linker = rust. default_linker . clone ( ) ;
761- config. musl_root = rust. musl_root . clone ( ) . map ( PathBuf :: from) ;
762- config. save_toolstates = rust. save_toolstates . clone ( ) . map ( PathBuf :: from) ;
761+ config. rustc_default_linker = rust. default_linker ;
762+ config. musl_root = rust. musl_root . map ( PathBuf :: from) ;
763+ config. save_toolstates = rust. save_toolstates . map ( PathBuf :: from) ;
763764 set ( & mut config. deny_warnings , flags. deny_warnings . or ( rust. deny_warnings ) ) ;
764765 set ( & mut config. backtrace_on_ice , rust. backtrace_on_ice ) ;
765766 set ( & mut config. rust_verify_llvm_ir , rust. verify_llvm_ir ) ;
@@ -776,9 +777,9 @@ impl Config {
776777 config. rust_codegen_units_std = rust. codegen_units_std . map ( threads_from_config) ;
777778 }
778779
779- if let Some ( ref t) = toml. target {
780+ if let Some ( t) = toml. target {
780781 for ( triple, cfg) in t {
781- let mut target = Target :: from_triple ( triple) ;
782+ let mut target = Target :: from_triple ( & triple) ;
782783
783784 if let Some ( ref s) = cfg. llvm_config {
784785 target. llvm_config = Some ( config. src . join ( s) ) ;
@@ -792,18 +793,18 @@ impl Config {
792793 if let Some ( s) = cfg. no_std {
793794 target. no_std = s;
794795 }
795- target. cc = cfg. cc . clone ( ) . map ( PathBuf :: from) ;
796- target. cxx = cfg. cxx . clone ( ) . map ( PathBuf :: from) ;
797- target. ar = cfg. ar . clone ( ) . map ( PathBuf :: from) ;
798- target. ranlib = cfg. ranlib . clone ( ) . map ( PathBuf :: from) ;
799- target. linker = cfg. linker . clone ( ) . map ( PathBuf :: from) ;
796+ target. cc = cfg. cc . map ( PathBuf :: from) ;
797+ target. cxx = cfg. cxx . map ( PathBuf :: from) ;
798+ target. ar = cfg. ar . map ( PathBuf :: from) ;
799+ target. ranlib = cfg. ranlib . map ( PathBuf :: from) ;
800+ target. linker = cfg. linker . map ( PathBuf :: from) ;
800801 target. crt_static = cfg. crt_static ;
801- target. musl_root = cfg. musl_root . clone ( ) . map ( PathBuf :: from) ;
802- target. musl_libdir = cfg. musl_libdir . clone ( ) . map ( PathBuf :: from) ;
803- target. wasi_root = cfg. wasi_root . clone ( ) . map ( PathBuf :: from) ;
804- target. qemu_rootfs = cfg. qemu_rootfs . clone ( ) . map ( PathBuf :: from) ;
802+ target. musl_root = cfg. musl_root . map ( PathBuf :: from) ;
803+ target. musl_libdir = cfg. musl_libdir . map ( PathBuf :: from) ;
804+ target. wasi_root = cfg. wasi_root . map ( PathBuf :: from) ;
805+ target. qemu_rootfs = cfg. qemu_rootfs . map ( PathBuf :: from) ;
805806
806- config. target_config . insert ( TargetSelection :: from_user ( triple) , target) ;
807+ config. target_config . insert ( TargetSelection :: from_user ( & triple) , target) ;
807808 }
808809 }
809810
@@ -821,10 +822,10 @@ impl Config {
821822 build_target. llvm_filecheck = Some ( ci_llvm_bin. join ( exe ( "FileCheck" , config. build ) ) ) ;
822823 }
823824
824- if let Some ( ref t) = toml. dist {
825- config. dist_sign_folder = t. sign_folder . clone ( ) . map ( PathBuf :: from) ;
826- config. dist_gpg_password_file = t. gpg_password_file . clone ( ) . map ( PathBuf :: from) ;
827- config. dist_upload_addr = t. upload_addr . clone ( ) ;
825+ if let Some ( t) = toml. dist {
826+ config. dist_sign_folder = t. sign_folder . map ( PathBuf :: from) ;
827+ config. dist_gpg_password_file = t. gpg_password_file . map ( PathBuf :: from) ;
828+ config. dist_upload_addr = t. upload_addr ;
828829 set ( & mut config. rust_dist_src , t. src_tarball ) ;
829830 set ( & mut config. missing_tools , t. missing_tools ) ;
830831 }
0 commit comments