snark_verifier/
cost.rs
1use std::ops::Add;
4
5#[derive(Debug, Default, Clone, PartialEq, Eq)]
7pub struct Cost {
8 pub num_instance: usize,
10 pub num_commitment: usize,
12 pub num_evaluation: usize,
14 pub num_msm: usize,
16 pub num_pairing: usize,
18}
19
20impl Add<Cost> for Cost {
21 type Output = Cost;
22
23 fn add(mut self, rhs: Cost) -> Self::Output {
24 self.num_instance += rhs.num_instance;
25 self.num_commitment += rhs.num_commitment;
26 self.num_evaluation += rhs.num_evaluation;
27 self.num_msm += rhs.num_msm;
28 self.num_pairing += rhs.num_pairing;
29 self
30 }
31}
32
33pub trait CostEstimation<T> {
35 type Input;
37
38 fn estimate_cost(input: &Self::Input) -> Cost;
40}