]> git.lizzy.rs Git - rust.git/commitdiff
Remove the merge dependency
authorbjorn3 <bjorn3@users.noreply.github.com>
Sat, 1 Jan 2022 16:03:24 +0000 (17:03 +0100)
committerbjorn3 <bjorn3@users.noreply.github.com>
Sat, 1 Jan 2022 16:03:24 +0000 (17:03 +0100)
Cargo.lock
src/bootstrap/Cargo.toml
src/bootstrap/config.rs

index dd4d48c126fdf37d2c5adb47690a7ed015a03ad2..a912eee97dbf20ce638bcc7e2538a0185d88d4cd 100644 (file)
@@ -176,7 +176,6 @@ dependencies = [
  "getopts",
  "ignore",
  "libc",
- "merge",
  "num_cpus",
  "once_cell",
  "opener",
@@ -2220,12 +2219,6 @@ dependencies = [
  "autocfg",
 ]
 
-[[package]]
-name = "merge"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "10bbef93abb1da61525bbc45eeaff6473a41907d19f8f9aa5168d214e10693e9"
-
 [[package]]
 name = "minifier"
 version = "0.0.41"
index 1f218dd8d67bc2567f1d9a72e2b5009bd9e55953..b68b2163f873a07291342ffef28dc7e7edbf8bd3 100644 (file)
@@ -47,7 +47,6 @@ toml = "0.5"
 time = "0.1"
 ignore = "0.4.10"
 opener = "0.5"
-merge = { version = "0.1.0", default-features = false, features = ["std"] }
 once_cell = "1.7.2"
 
 [target.'cfg(windows)'.dependencies.winapi]
index fcca783fbfe3ec31f002a16588e77b978c9f6f24..c930657c5bd2f0378cbebba8e7d407291c1f3d8c 100644 (file)
@@ -18,7 +18,6 @@
 use crate::flags::{Color, Flags};
 use crate::util::exe;
 use build_helper::t;
-use merge::Merge;
 use serde::Deserialize;
 
 macro_rules! check_ci_llvm {
@@ -334,6 +333,10 @@ struct TomlConfig {
     profile: Option<String>,
 }
 
+trait Merge {
+    fn merge(&mut self, other: Self);
+}
+
 impl Merge for TomlConfig {
     fn merge(
         &mut self,
@@ -357,6 +360,8 @@ fn do_merge<T: Merge>(x: &mut Option<T>, y: Option<T>) {
     }
 }
 
+// We are using a decl macro instead of a derive proc macro here to reduce the compile time of
+// rustbuild.
 macro_rules! derive_merge {
     ($(#[$attr:meta])* struct $name:ident {
         $($field:ident: $field_ty:ty,)*
@@ -369,7 +374,9 @@ struct $name {
         impl Merge for $name {
             fn merge(&mut self, other: Self) {
                 $(
-                    Merge::merge(&mut self.$field, other.$field);
+                    if !self.$field.is_some() {
+                        self.$field = other.$field;
+                    }
                 )*
             }
         }