forked from extern/nushell
0bd4d27e8d
# Description The correction made here concerns the issue #8431. Indeed, the algorithm initially proposed to remove elements of a `vector` performed a loop with `remove` and an incident therefore appeared when several values were equal because the deletion was done outside the length of the vector: ```rust let mut found = false; for (i, col) in cols.clone().iter().enumerate() { if col == col_name { cols.remove(i); vals.remove(i); found = true; } } ``` Then, `[[a, a]; [1, 2]] | reject a: ` gave `thread 'main' panicked at 'removal index (is 1) should be < len (is 1)', crates/nu-protocol/src/value/mod.rs:1213:54`. The proposed correction is therefore the implementation of the `retain_mut` utility dedicated to this functionality. ```rust let mut found = false; let mut index = 0; cols.retain_mut(|col| { if col == col_name { found = true; vals.remove(index); false } else { index += 1; true } }); ``` |
||
---|---|---|
.. | ||
commands | ||
format_conversions | ||
main.rs |