settings: Use a derive macro for refine (#38451)

When we refactored settings to not pass JSON blobs around, we ended up
needing
to write *a lot* of code that just merged things (like json merge used
to do).

Use a derive macro to prevent typos in this logic.

Release Notes:

- N/A
This commit is contained in:
Conrad Irwin
2025-09-18 21:13:49 +00:00
committed by GitHub
parent 5f4f0a873e
commit b09764c54a
74 changed files with 1089 additions and 2818 deletions
-18
View File
@@ -1390,21 +1390,3 @@ Line 3"#
assert_eq!(result[1], (10..15, "world")); // '🦀' is 4 bytes
}
}
pub fn refine<T: Clone>(dest: &mut T, src: &Option<T>) {
if let Some(src) = src {
*dest = src.clone()
}
}
pub trait MergeFrom: Sized + Clone {
fn merge_from(&mut self, src: &Option<Self>);
}
impl<T: Clone> MergeFrom for T {
fn merge_from(&mut self, src: &Option<Self>) {
if let Some(src) = src {
*self = src.clone();
}
}
}