arnaucube
arnaucube/sonobePublic Self-hosted repository
sonobe/frontends/src/noname/utils.rs
frontends/src/noname/utils.rsRaw
 1use std::collections::HashMap;
 2
 3use ark_ff::PrimeField;
 4use ark_r1cs_std::{fields::fp::FpVar, R1CSVar};
 5use ark_relations::r1cs::SynthesisError;
 6use noname::inputs::JsonInputs;
 7use serde_json::json;
 8
 9pub struct NonameInputs(pub JsonInputs);
10
11impl<F: PrimeField> From<(&Vec<F>, String)> for NonameInputs {
12    fn from(value: (&Vec<F>, String)) -> Self {
13        let (values, key) = value;
14        let mut inputs = HashMap::new();
15        if values.is_empty() {
16            NonameInputs(JsonInputs(inputs))
17        } else {
18            let field_elements: Vec<String> = values
19                .iter()
20                .map(|value| {
21                    if value.is_zero() {
22                        "0".to_string()
23                    } else {
24                        value.to_string()
25                    }
26                })
27                .collect();
28            inputs.insert(key, json!(field_elements));
29            NonameInputs(JsonInputs(inputs))
30        }
31    }
32}
33
34impl NonameInputs {
35    pub fn from_fpvars<F: PrimeField>(
36        value: (&Vec<FpVar<F>>, String),
37    ) -> Result<Self, SynthesisError> {
38        let (values, key) = value;
39        let mut inputs = HashMap::new();
40        if values.is_empty() {
41            Ok(NonameInputs(JsonInputs(inputs)))
42        } else {
43            let field_elements: Vec<String> = values
44                .iter()
45                .map(|var| {
46                    let value = var.value()?;
47                    if value.is_zero() {
48                        Ok("0".to_string())
49                    } else {
50                        Ok(value.to_string())
51                    }
52                })
53                .collect::<Result<Vec<String>, SynthesisError>>()?;
54            inputs.insert(key, json!(field_elements));
55            Ok(NonameInputs(JsonInputs(inputs)))
56        }
57    }
58}