statsig_rust/
statsig_core_api_options.rs

1use serde::{Deserialize, Serialize};
2
3use crate::UserPersistedValues;
4
5pub enum AnyEvaluationOptions {
6    FeatureGateEvaluationOptions(FeatureGateEvaluationOptions),
7    DynamicConfigEvaluationOptions(DynamicConfigEvaluationOptions),
8    ExperimentEvaluationOptions(ExperimentEvaluationOptions),
9    LayerEvaluationOptions(LayerEvaluationOptions),
10    ParameterStoreEvaluationOptions(ParameterStoreEvaluationOptions),
11}
12
13#[derive(Debug, Clone, Default, Deserialize)]
14pub struct FeatureGateEvaluationOptions {
15    #[serde(default)]
16    pub disable_exposure_logging: bool,
17}
18
19#[derive(Debug, Clone, Default, Deserialize)]
20pub struct DynamicConfigEvaluationOptions {
21    #[serde(default)]
22    pub disable_exposure_logging: bool,
23}
24
25#[derive(Debug, Clone, Default, Deserialize)]
26pub struct ExperimentEvaluationOptions {
27    #[serde(default)]
28    pub disable_exposure_logging: bool,
29    pub user_persisted_values: Option<UserPersistedValues>,
30}
31
32#[derive(Debug, Clone, Default, Deserialize)]
33pub struct LayerEvaluationOptions {
34    #[serde(default)]
35    pub disable_exposure_logging: bool,
36    pub user_persisted_values: Option<UserPersistedValues>,
37}
38
39#[derive(Debug, Clone, Default, Deserialize, Serialize, Copy)]
40pub struct ParameterStoreEvaluationOptions {
41    #[serde(default)]
42    pub disable_exposure_logging: bool,
43}
44
45// -------------------------
46//   From implementations into ParameterStoreEvaluationOptions
47// -------------------------
48
49impl From<ParameterStoreEvaluationOptions> for FeatureGateEvaluationOptions {
50    fn from(opts: ParameterStoreEvaluationOptions) -> Self {
51        FeatureGateEvaluationOptions {
52            disable_exposure_logging: opts.disable_exposure_logging,
53        }
54    }
55}
56
57impl From<ParameterStoreEvaluationOptions> for DynamicConfigEvaluationOptions {
58    fn from(opts: ParameterStoreEvaluationOptions) -> Self {
59        DynamicConfigEvaluationOptions {
60            disable_exposure_logging: opts.disable_exposure_logging,
61        }
62    }
63}
64
65impl From<ParameterStoreEvaluationOptions> for ExperimentEvaluationOptions {
66    fn from(opts: ParameterStoreEvaluationOptions) -> Self {
67        ExperimentEvaluationOptions {
68            disable_exposure_logging: opts.disable_exposure_logging,
69            user_persisted_values: None,
70        }
71    }
72}
73
74impl From<ParameterStoreEvaluationOptions> for LayerEvaluationOptions {
75    fn from(opts: ParameterStoreEvaluationOptions) -> Self {
76        LayerEvaluationOptions {
77            disable_exposure_logging: opts.disable_exposure_logging,
78            user_persisted_values: None,
79        }
80    }
81}