pub fn deriv_n<T, F>(v: Vec<T>, d: F) -> DerivN<T, F> ⓘ
Expand description
Return an iterator that generates variants of the vector applying to each
element the function F
In case the value of F
is None, the row will be skipped while if the value is Some(x)
, then the corresponding element will be replaced by x
.
use rbe::deriv_n;
let vec = vec![1,2,3];
let sets = deriv_n(vec, |x: &i32| { Some(x + 100)}).collect::<Vec<_>>();
assert_eq!(sets, vec![
vec![101, 2, 3],
vec![1, 102, 3],
vec![1, 2, 103]
])
A similar example which doesn’t generate iterator for the value 2
use rbe::deriv_n;
let vec = vec![1,2,3];
let sets = deriv_n(vec, |x: &i32| {
match &x {
2 => None,
_ => Some(x + 100)
}
}).collect::<Vec<_>>();
assert_eq!(sets, vec![
vec![101, 2, 3],
vec![1, 2, 103]
])