INNER CODE UNIT · Rust
lc_query_set_to_poly_query_set
arkworks-rs/poly-commit · poly-commit/src/lib.rs:623
fn lc_query_set_to_poly_query_set<'a, F: Field, T: Clone + Ord>(
linear_combinations: impl IntoIterator<Item = &'a LinearCombination<F>>,
query_set: &QuerySet<T>,
) -> QuerySet<T> {
let mut poly_query_set = QuerySet::<T>::new();
let lc_s = linear_combinations.into_iter().map(|lc| (lc.label(), lc));
let linear_combinations = BTreeMap::from_iter(lc_s);
for (lc_label, (point_label, point)) in query_set {
if let Some(lc) = linear_combinations.get(lc_label) {
for (_, poly_label) in lc.iter().filter(|(_, l)| !l.is_one()) {
if let LCTerm::PolyLabel(l) = poly_label {
poly_query_set.insert((l.into(), (point_label.clone(), point.clone())));
}
}
}
}
poly_query_set
}