imbl

Macro update_in

Source
macro_rules! update_in {
    ($target:expr, $path:expr => $($tail:tt) => *, $value:expr ) => { ... };
    ($target:expr, $path:expr, $value:expr) => { ... };
}
Expand description

Update a value inside multiple levels of data structures.

This macro takes a Vector, OrdMap or HashMap, a key or a series of keys, and a value, and returns the data structure with the new value at the location described by the keys.

If one of the keys in the path doesn’t exist, the macro will panic.

§Examples

let vec_inside_vec = vector![vector![1, 2, 3], vector![4, 5, 6]];

let expected = vector![vector![1, 2, 3], vector![4, 5, 1337]];

assert_eq!(expected, update_in![vec_inside_vec, 1 => 2, 1337]);