swiftness_commitment/vector/
config.rs

1use serde::{Deserialize, Serialize};
2use serde_with::serde_as;
3use starknet_crypto::Felt;
4
5#[serde_as]
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7pub struct Config {
8    #[cfg_attr(
9        feature = "std",
10        serde_as(as = "starknet_core::serde::unsigned_field_element::UfeHex")
11    )]
12    pub height: Felt,
13    #[cfg_attr(
14        feature = "std",
15        serde_as(as = "starknet_core::serde::unsigned_field_element::UfeHex")
16    )]
17    pub n_verifier_friendly_commitment_layers: Felt,
18}
19
20impl Config {
21    pub fn validate(
22        &self,
23        expected_height: Felt,
24        expected_n_verifier_friendly_commitment_layers: Felt,
25    ) -> Result<(), Error> {
26        if self.height != expected_height {
27            return Err(Error::MisMatch { value: self.height, expected: expected_height });
28        }
29        if self.n_verifier_friendly_commitment_layers
30            != expected_n_verifier_friendly_commitment_layers
31        {
32            return Err(Error::MisMatch {
33                value: self.n_verifier_friendly_commitment_layers,
34                expected: expected_n_verifier_friendly_commitment_layers,
35            });
36        }
37
38        Ok(())
39    }
40}
41
42#[cfg(feature = "std")]
43use thiserror::Error;
44
45#[cfg(feature = "std")]
46#[derive(Error, Debug)]
47pub enum Error {
48    #[error("mismatch value {value} expected {expected}")]
49    MisMatch { value: Felt, expected: Felt },
50}
51
52#[cfg(not(feature = "std"))]
53use thiserror_no_std::Error;
54
55#[cfg(not(feature = "std"))]
56#[derive(Error, Debug)]
57pub enum Error {
58    #[error("mismatch value {value} expected {expected}")]
59    MisMatch { value: Felt, expected: Felt },
60}