1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use owned::variables::VariablesOwned;
use serde::{Deserialize, Serialize};
use zkinterface_generated::zkinterface::ConstraintSystem;
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
pub struct ConstraintSystemOwned {
pub constraints: Vec<BilinearConstraintOwned>,
}
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
pub struct BilinearConstraintOwned {
pub linear_combination_a: VariablesOwned,
pub linear_combination_b: VariablesOwned,
pub linear_combination_c: VariablesOwned,
}
impl<'a> From<ConstraintSystem<'a>> for ConstraintSystemOwned {
fn from(constraints_ref: ConstraintSystem) -> ConstraintSystemOwned {
let mut owned = ConstraintSystemOwned {
constraints: vec![],
};
let cons_ref = constraints_ref.constraints().unwrap();
for i in 0..cons_ref.len() {
let con_ref = cons_ref.get(i);
owned.constraints.push(BilinearConstraintOwned {
linear_combination_a: VariablesOwned::from(con_ref.linear_combination_a().unwrap()),
linear_combination_b: VariablesOwned::from(con_ref.linear_combination_b().unwrap()),
linear_combination_c: VariablesOwned::from(con_ref.linear_combination_c().unwrap()),
});
}
owned
}
}