Skip to content

Commit 8c322df

Browse files
committed
add api to merge params
1 parent ce97ba3 commit 8c322df

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/param.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,15 @@ impl Params {
440440
self.set(key, format!("{value}"));
441441
self
442442
}
443+
444+
/// Merge in parameters from other Params struct,
445+
/// overwriting the keys that are in both
446+
/// with the values from the new Params struct.
447+
pub fn merge_in_from_params(&mut self, new_params: Self) -> &mut Self {
448+
let mut new_params = new_params;
449+
self.inner.append(&mut new_params.inner);
450+
self
451+
}
443452
}
444453

445454
#[cfg(test)]
@@ -502,4 +511,18 @@ mod tests {
502511
assert_eq!(p.get(Param::Height), Some("14"));
503512
Ok(())
504513
}
514+
515+
#[test]
516+
fn test_merge() -> Result<()> {
517+
let mut p = Params::from_str("w=12\na=5\nh=14")?;
518+
let p2 = Params::from_str("L=1\nh=17")?;
519+
assert_eq!(p.len(), 3);
520+
p.merge_in_from_params(p2);
521+
assert_eq!(p.len(), 4);
522+
assert_eq!(p.get(Param::Width), Some("12"));
523+
assert_eq!(p.get(Param::Height), Some("17"));
524+
assert_eq!(p.get(Param::Forwarded), Some("5"));
525+
assert_eq!(p.get(Param::IsEdited), Some("1"));
526+
Ok(())
527+
}
505528
}

0 commit comments

Comments
 (0)