1
Fork 0

Remove the merge dependency

This commit is contained in:
bjorn3 2022-01-01 17:03:24 +01:00
parent 947e9483e9
commit ad6f98cd28
3 changed files with 9 additions and 10 deletions

View file

@ -176,7 +176,6 @@ dependencies = [
"getopts", "getopts",
"ignore", "ignore",
"libc", "libc",
"merge",
"num_cpus", "num_cpus",
"once_cell", "once_cell",
"opener", "opener",
@ -2220,12 +2219,6 @@ dependencies = [
"autocfg", "autocfg",
] ]
[[package]]
name = "merge"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10bbef93abb1da61525bbc45eeaff6473a41907d19f8f9aa5168d214e10693e9"
[[package]] [[package]]
name = "minifier" name = "minifier"
version = "0.0.41" version = "0.0.41"

View file

@ -47,7 +47,6 @@ toml = "0.5"
time = "0.1" time = "0.1"
ignore = "0.4.10" ignore = "0.4.10"
opener = "0.5" opener = "0.5"
merge = { version = "0.1.0", default-features = false, features = ["std"] }
once_cell = "1.7.2" once_cell = "1.7.2"
[target.'cfg(windows)'.dependencies.winapi] [target.'cfg(windows)'.dependencies.winapi]

View file

@ -18,7 +18,6 @@ pub use crate::flags::Subcommand;
use crate::flags::{Color, Flags}; use crate::flags::{Color, Flags};
use crate::util::exe; use crate::util::exe;
use build_helper::t; use build_helper::t;
use merge::Merge;
use serde::Deserialize; use serde::Deserialize;
macro_rules! check_ci_llvm { macro_rules! check_ci_llvm {
@ -334,6 +333,10 @@ struct TomlConfig {
profile: Option<String>, profile: Option<String>,
} }
trait Merge {
fn merge(&mut self, other: Self);
}
impl Merge for TomlConfig { impl Merge for TomlConfig {
fn merge( fn merge(
&mut self, &mut self,
@ -357,6 +360,8 @@ impl Merge for TomlConfig {
} }
} }
// We are using a decl macro instead of a derive proc macro here to reduce the compile time of
// rustbuild.
macro_rules! derive_merge { macro_rules! derive_merge {
($(#[$attr:meta])* struct $name:ident { ($(#[$attr:meta])* struct $name:ident {
$($field:ident: $field_ty:ty,)* $($field:ident: $field_ty:ty,)*
@ -369,7 +374,9 @@ macro_rules! derive_merge {
impl Merge for $name { impl Merge for $name {
fn merge(&mut self, other: Self) { fn merge(&mut self, other: Self) {
$( $(
Merge::merge(&mut self.$field, other.$field); if !self.$field.is_some() {
self.$field = other.$field;
}
)* )*
} }
} }